{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "extracting_features_EfficientNetB4.ipynb",
      "provenance": [],
      "authorship_tag": "ABX9TyOi0Am48CHAF9hPB3EHGx5G",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/MathieuGrosso/projet-dima-/blob/main/extracting_features_EfficientNetB4.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Sda4pmO9GjBS",
        "outputId": "f4204acb-029b-4d34-d70a-af9061ac3cd5"
      },
      "source": [
        "import sys\n",
        "print(sys.version)\n",
        "\n",
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "from sklearn.manifold import TSNE, Isomap, MDS\n",
        "\n",
        "import tensorflow as tf\n",
        "import tensorflow_datasets as tfds\n",
        "from tensorflow.keras.layers import Input, Dense, Lambda, Flatten, Reshape\n",
        "\n",
        "from tensorflow.keras.models import Model\n",
        "from tensorflow.keras import backend as K\n",
        "from tensorflow.keras import metrics\n",
        "from tensorflow.keras.datasets import mnist, fashion_mnist\n",
        "from tensorflow.keras.layers.experimental import preprocessing\n",
        "import cv2\n",
        "\n",
        "from tensorflow.keras.utils import to_categorical"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "3.7.10 (default, Feb 20 2021, 21:17:23) \n",
            "[GCC 7.5.0]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V-V_8F9LIp1p"
      },
      "source": [
        "#Load Data "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 164
        },
        "id": "4HerE_-XHwFl",
        "outputId": "9dd3dedd-b39a-4d07-a9ad-4ef404e6be1a"
      },
      "source": [
        "#import data of mnist and fashion mnist: \n",
        "dataset = \"numbers\" # \"numbers\" or \"fashion\"\n",
        "anomaly_class = 8  # indicates which class is considered as anomalous\n",
        "\n",
        "if dataset == \"numbers\":\n",
        "    (x_train, y_train), (x_test, y_test) = mnist.load_data()\n",
        "    dico = {\n",
        "            0: '0',\n",
        "            1: '1',\n",
        "            2: '2',\n",
        "            3: '3',\n",
        "            4: '4',\n",
        "            5: '5',\n",
        "            6: '6',\n",
        "            7: '7',\n",
        "            8: '8',\n",
        "            9: '9',\n",
        "    }\n",
        "elif dataset ==\"fashion\":\n",
        "    (x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()\n",
        "    dico = {\n",
        "            0: 'T-shirt/top',\n",
        "            1: 'Trouser/pants',\n",
        "            2: 'Pullover shirt',\n",
        "            3: 'Dress',\n",
        "            4: 'Coat',\n",
        "            5: 'Sandal',\n",
        "            6: 'Shirt',\n",
        "            7: 'Sneaker',\n",
        "            8: 'Bag',\n",
        "            9: 'Ankle boot',\n",
        "    }\n",
        "else:\n",
        "    print(\"Error: choices are 'fashion' or 'numbers'\")\n",
        "\n",
        "#We only keep normal images in the training set\n",
        "#J'ai enlevé ces deux lignes pour le moment pour essayer de déjà faire marcher l'algo en version supervised\n",
        "x_train = x_train[y_train != anomaly_class]\n",
        "y_train = y_train[y_train != anomaly_class]\n",
        "\n",
        "# Normalization and shape configuration\n",
        "x_train = x_train.astype('float32') / 255.\n",
        "x_test = x_test.astype('float32') / 255.\n",
        "x_train = np.expand_dims(x_train, axis=3)\n",
        "x_test = np.expand_dims(x_test, axis=3)\n",
        "\n",
        "# Display some NORMAL images\n",
        "n = 10  # how many images we will display\n",
        "plt.figure(figsize=(20, 4))\n",
        "for i in range(n):\n",
        "    # display original\n",
        "    ax = plt.subplot(1, n, i + 1)\n",
        "    plt.imshow(x_train[i].reshape(28,28))\n",
        "    plt.gray()\n",
        "    ax.get_xaxis().set_visible(False)\n",
        "    ax.get_yaxis().set_visible(False)\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
            "11493376/11490434 [==============================] - 0s 0us/step\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAABG0AAABwCAYAAACkaY2RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAa0UlEQVR4nO3deZBU1dnH8TMIjhAcQZi4YBgImxCEQUAFKTAsooiAEhBkV4OBgJoEghGiGFZRSQ0gsgmEpQJU2MRgkMjmghRIsGoEDBAFIawKDgwygJn3j7fq4TmH6Z7unl5u3/5+/vpdz+nbR3tuL9dzzpNWWFhoAAAAAAAA4C2lEj0AAAAAAAAAXI2bNgAAAAAAAB7ETRsAAAAAAAAP4qYNAAAAAACAB3HTBgAAAAAAwIO4aQMAAAAAAOBBpcPpnJaWRn3wBCksLEyLxnl4DRPqVGFhYWY0TsTrmDhci77AtegDXIu+wLXoA1yLvsC16ANci75Q5LXITBsgfg4megAAjDFci4BXcC0C3sC1CHhDkdciN20AAAAAAAA8iJs2AAAAAAAAHsRNGwAAAAAAAA/ipg0AAAAAAIAHcdMGAAAAAADAg7hpAwAAAAAA4EHctAEAAAAAAPAgbtoAAAAAAAB4EDdtAAAAAAAAPIibNgAAAAAAAB7ETRsAAAAAAAAPKp3oAQCRaty4seQhQ4ZYbX379pW8YMECyVOnTrX67dy5M0ajAwAAuCInJ0fyM888Izk3N9fq17FjR8kHDx6M/cAAABF5//33JaelpUlu3bp1VJ+HmTYAAAAAAAAexE0bAAAAAAAAD/Ld8qhrrrlG8g033BDSY9ylNeXKlZNcp04dyb/+9a+tfq+99prknj17Wm0XLlyQPHHiRMkvv/xySGPC1bKzs63j9evXS87IyLDaCgsLJffp00dyp06drH6VKlWK5hCRIG3atJG8ePFiq61Vq1aSv/jii7iNCVcbNWqUZPe9sFSpK/8P4b777rPaNm/eHNNxAX5x/fXXSy5fvrzV9tBDD0nOzMyUPHnyZKtfQUFBjEaXeqpVq2Yd9+7dW/L//vc/yXXr1rX63X777ZJZHpVYtWvXto7LlCkjuWXLlpKnT59u9dOvb6RWr14tuUePHlbbxYsXS3z+VKZfx+bNm0seP3681e/ee++N25iQHP785z9bx/rvR2/JEW3MtAEAAAAAAPAgbtoAAAAAAAB4kGeXR1WtWtU6vvbaayXraUgtWrSw+lWoUEFy165dSzyOw4cPS54yZYrV9sgjj0g+e/as1fbZZ59JZmp/5O666y7Jy5cvt9r08je9HMoY+/XQU0jd5VD33HOPZLeSlB+nnuqpvPq/xcqVKxMxnKhp2rSp5O3btydwJHD1799f8ogRIyQHmzruXs8ArtBLbvQ1ZYwxzZo1k1y/fv2QznfLLbdYx7qqEUrm5MmT1vGWLVsku8u1kVg/+9nPJOvPrW7duln99FLeW2+9VbL7mRaNzzH9NzJjxgyr7bnnnpOcl5dX4udKNfo3xMaNGyUfO3bM6nfzzTcHbEPq0Fud/OpXv7LaLl26JFlXkoo2ZtoAAAAAAAB4EDdtAAAAAAAAPIibNgAAAAAAAB7kqT1tdEnnDRs2WG2hlu+OBr0uVZeoPXfunNVPlxY+evSo1Xb69GnJlBkOTpdYN8aYO++8U/KiRYsku+vug9m3b5/kSZMmSV6yZInV76OPPpKsX2tjjJkwYULIz5csdCnlWrVqSU62PW30mnJjjKlevbrkrKwsqy0tLS0uY0LR9Otx3XXXJXAkqevuu++WrEsOt2rVyuqn93RwDRs2TPJ///tfye6+cvo9e9u2beEPFsYYu+SzMfb+Fb169ZJctmxZq59+v/v666+tNr3Xmy4x3b17d6ufLl28d+/ecIYNR35+vnVM+W7v0t/5OnTokMCRFK1v377W8VtvvSVZf5dFyeg9bNxj9rRJXXoPVF0u3hhjPvzwQ8nLli2L2RiYaQMAAAAAAOBB3LQBAAAAAADwIE8tjzp06JDkb775xmor6fIod5r2mTNnJP/85z+32nSp54ULF5boeVG8mTNnWsc9e/Ys8Tn1Eqvy5ctLdsuv6+VCDRo0KPHzep2eXrt169YEjqRk3KVyv/zlLyXr5RnGML0/3tq2bWsdDx06tMh+7uvSsWNHycePH4/+wFLIY489Zh3n5ORIrly5smR36eCmTZskZ2ZmWm2vvvpqkc/lnkM/rkePHqENOIXp7zavvPKKZPc1vP7660M6n14a3L59e6tNT+nW15/+myjqGJGrUKGCddywYcMEjQTFWb9+veRgy6NOnDghWS9RcpdtuyXAtebNm0t2l6kisVhSnzxatmwpeeTIkZLd35Hffvtt2Od2z1G/fn3JBw4csNr08vFYYqYNAAAAAACAB3HTBgAAAAAAwIO4aQMAAAAAAOBBntrTRq85Gz58uNWm9zv417/+JXnKlCkBz7dr1y7J7dq1s9p0GUa3zOmzzz4b4ogRqcaNG0t+6KGHrLZA60nd/WjWrFkj+bXXXrPadEla/feiS7EbY0zr1q2LfV4/cddcJ6s5c+YEbNN7OiA+dNnnefPmWW2B9iNz90ihFG74Spe+8hHepEkTybNnz7b6lStXTvKWLVskjxkzxuqny1amp6dbbbqM5f333x9wTDt27Chu2FAeeeQRyU899VTYj3fX1uvvOm7J75o1a4Z9fpSMvvaMMaZq1aohPa5p06aS3f2/eK+MjTfffFPyqlWrAva7dOmS5EhLQGdkZEjOzc2VfOuttwZ8jDsm3mtjo7Cw0Dq+7rrrEjQSFGfWrFmSa9WqJblevXpWP/3dJlQvvPCCdVypUiXJeh9NY4z57LPPwj5/JPzxCw4AAAAAAMBnuGkDAAAAAADgQZ5aHqW50wA3bNgg+ezZs5Ld8olPPvmkZL1kRi+Hcn3++efW8cCBA8MbLEKSnZ0tWZdW1NNEjbGnJr777ruS3fJrukziqFGjrDa9fObkyZOS3SlsuiSju0xLlw3fuXOnSUZuGfObbropQSOJrkBLboyx/7YQH/369ZMcbHq3Lim9YMGCWA4pJfTu3VtysCWD+prQpaTz8vICPsYtOR1oSdThw4et47/85S8Bz4mrdevWLaR+X331leTt27dLHjFihNXPXRKl1a1bN7zBocT0Um1jjJk/f77k0aNHB3ycbjtz5ozVNm3atGgMDY7Lly9LDnYdRUP79u0lV6xYMaTHuO+1BQUFUR0TiqaXHn/yyScJHAlc58+fl6x/O0a6pE3/Ts3KyrLa9O/FRC2ZY6YNAAAAAACAB3HTBgAAAAAAwIM8uzzKFWga93fffRfwMXp356VLl1ptepoTYqN27drWsa4Ippe3nDp1yup39OhRyXqq/blz56x+f//734vMkSpbtqx1/Lvf/U5yr169Snz+ROjQoYN17P47JhO9tKt69eoB+x05ciQew0lplStXto6feOIJye57q57aP3bs2NgOzOfcak+6uoGeGjx9+nSrn14+GmxJlDZy5MiQ+j3zzDPWsV6OiuLp7yl6afZ7771n9du/f7/kEydORPRcflkem8z0NRxseRT8pUePHtaxvu5D/V724osvRnVMqU4vh9O/Jd3l9zVq1IjbmBCc+x3ojjvukLxnzx7J4VRz+tGPfiRZLzd2K//ppXF/+9vfQj5/NDHTBgAAAAAAwIO4aQMAAAAAAOBB3LQBAAAAAADwoKTZ0yYQd01w48aNJeuS0G3btrX6uevFER3p6emSdcl1Y+z9VXTZ9r59+1r9duzYITmRe7BUrVo1Yc8dLXXq1AnY5pa69zr99+TuzfDvf/9bsv7bQvRUq1ZN8vLly0N+3NSpUyVv3LgxmkNKCXofA72HjTHGXLx4UfK6desku2Wgv//++yLP7Zat1GW93fe/tLQ0yXpvotWrVwccO4qnS0LHeo+TZs2axfT8CE+pUlf+vyn7LCY/d+/D559/XnLNmjWttjJlyoR0zl27dkm+dOlSCUYHl95v74MPPpDcsWPHRAwHAfzkJz+RrPeCMsbel2jIkCGSw9lbb/LkyZK7desmWX82G2PMvffeG/I5Y4WZNgAAAAAAAB7ETRsAAAAAAAAPSvrlUfn5+daxnjq1c+dOybNnz7b66Wn6ejmOMca88cYbknUZVRSvUaNGkt1y01rnzp0lb968OaZjQtG2b9+e6CEYY4zJyMiQ/MADD1htvXv3lqyXbrh0GUA95RXRo1+bBg0aBOz3/vvvW8c5OTkxG5MfVahQwToePHiwZPfzSC+J6tKlS0jn19P0Fy9ebLXp5cUuXeJy0qRJIT0XYkOXWdflSoujy6NqH3/8sXW8devWyAaGsOglUXzXTDy9BLhPnz6S3e0VAmnRooV1HOprmpeXJ1kvqTLGmLVr10oOtMwV8Jv69etLXrlypeTKlStb/fTy+1B/Sw4bNsw67t+/f5H9xo0bF9L54omZNgAAAAAAAB7ETRsAAAAAAAAPSvrlUa4DBw5I1lOe5s2bZ/XTUx91NsaebrxgwQLJR48ejdYwfUvvwq2rjRhjT13zypKoVK7ecOONN0b0uIYNG0rWr7E7hfi2226TfO2110p2Kyzo18Cd/rtt2zbJBQUFkkuXtt+6Pv3005DGjvDoJTcTJ04M2O/DDz+U3K9fP6vtu+++i/7AfExfK8ZcPR1Y08tkfvzjH0seMGCA1a9Tp06S9bTj8uXLW/30dH53av+iRYsku8uSER3lypWTXK9ePavtpZdekhxs6XGon2m6Mob79/LDDz8UP1ggyen3QmOMefvttyXHs3qorlw0a9asuD0vQlOpUqVED8GX9Pd4vRWCMca89dZbkoN9pumKiH/4wx8k69+ixti/d3SFKGPs3zH6N//MmTOD/wskADNtAAAAAAAAPIibNgAAAAAAAB7ETRsAAAAAAAAP8t2eNpouE7Zv3z6rTa93a9OmjdU2fvx4yVlZWZLd8l9HjhyJyjiTWceOHa3j7Oxsye6eCHq9sFcEK7m5a9eueA8n6tw9YvS/44wZMyS/8MILIZ9Tl3vWa0EvX75s9Tt//rzk3bt3S547d67Vb8eOHZLdvY6OHz8u+fDhw5LLli1r9du7d29IY0dwuuSpMcYsX748pMf95z//kaxfM4Tv4sWL1vHJkyclZ2ZmWm1ffvml5FDLy+q9THSpWWOMueWWWySfOnXKaluzZk1I50dwZcqUsY4bNWokWV9v+rUwxn4v16+hW577gQcekKz3yHHp/QQeffRRqy0nJ0ey+/cI+JX+PuPuyRgKvfeGMaHvk6i/Rz/44INW27vvvhv2OBBdek84RE+PHj0kz5kzx2rT32f0dbR//36rX5MmTYrMnTt3tvpVqVJFsvvZqr9jPfHEEyGNPVGYaQMAAAAAAOBB3LQBAAAAAADwIF8vj9Jyc3Ot4+7du0t++OGHrTZdHvzpp5+WXKtWLatfu3btojnEpOQuU9Hlak+cOGG1LV26NC5jcqWnp0sePXp0wH4bNmywjnX5uGQ1ePBg6/jgwYOSmzdvHtE5Dx06JHnVqlWS9+zZY/X75JNPIjq/NnDgQMl6aYhejoPoGTFihHUc6vTuYOXAEZ4zZ85Yx7rs+jvvvGO16TKWBw4ckLx69Wqr3/z58yV/++23kpcsWWL109OG3TZETn8u6uVLxhizYsWKIh/z8ssvW8f68+mjjz6SrP8G3H5uSWNNv59OmDDBagv0Hm+MMQUFBQHPifCEWp69ZcuW1vG0adNiNqZU4v4uuO+++yTrEsTr1q2z+l24cCHs53ryySet46FDh4Z9DsTOxo0bJbvbPiA6HnvsMetY/9a+dOmS1aa/Bz3++OOST58+bfV7/fXXJbdq1UqyXipljL3c0V1KXrlyZclff/21ZP1+YIz9HStRmGkDAAAAAADgQdy0AQAAAAAA8CBu2gAAAAAAAHhQyuxp49Lr5RYuXGi16dJjuiymu65Yr3fbtGlTdAfoA+7a96NHj8btufU+NqNGjZI8fPhwq58uI63XRhpjzLlz52I0usR55ZVXEj2EsLRp06bIfx5qKWoULzs7W/L9998f0mPcPVO++OKLqI4JV2zbtk2yW/I7EvpzTK8BN8beV4N9oyLnlvXW+9O4n0GaLu87depUq01/Z9F/B2vXrrX63XHHHZLdct2TJk2SrPe7ccujLl68WPI///lPq01/hrj7C2i7du0K2Ib/p683d58FzS3JXq9ePcm7d++O/sBSlN7zb9y4cVE9t7ufInvaeIvex8ul38+zsrKsNv03g+D0HrHG2P/Nx44da7Xp/W6C0dfRzJkzJTdr1izkcen9bvTeRl7Yw8bFTBsAAAAAAAAP4qYNAAAAAACAB6XM8qgGDRpYx7/4xS8kN23a1GrTS6I0dxrqli1bojQ6f3r77bfj9lx6iYcx9hR0XWbOXdbRtWvX2A4MMbFy5cpED8E33nvvPckVK1YM2E+XcO/fv38sh4QYKlu2rGS3zLBeokHJ7/Bcc801kseMGWO1DRs2THJ+fr7V9vzzz0vW/83d0u+6hKku+dyoUSOr3759+yQPGjTIatNTvzMyMiQ3b97c6terVy/JnTp1strWr19viqJLpRpjTPXq1YvshytmzJgh2V06EMzAgQMlP/fcc1EdE2Kjffv2iR4Cgrh8+XLANr18Rm+9gPC4v79WrFgh2f38CJUu162X/Lp69uwpOTc3N2A/vWWGFzHTBgAAAAAAwIO4aQMAAAAAAOBBvlseVadOHclDhgyR7O6+f/PNN4d0vh9++EGyW/3InVqeivS0Qfe4S5cuVtuzzz4b1ef+zW9+I/mPf/yj1XbDDTdI1pUw+vbtG9UxAMmuUqVKkoO9p02fPl2yHyurpYp169Ylegi+pJes6OVQxhhz/vx5ye4yGL088Z577pE8YMAAq9+DDz4oWS9x+9Of/mT101U3gk05z8vLk/yPf/zDatPHelq5McY8/vjjRZ5Pfx4jNHv37k30EHzPreSmKyRu2LDBavv++++j+tz6Gs7JyYnquRFdeumOe13efvvtkt3liIMHD47twHwkGteA/m1njDHdunWTrJf8upWfli1bVuLn9gJm2gAAAAAAAHgQN20AAAAAAAA8iJs2AAAAAAAAHpSUe9ro/Wjc9dZ6H5tq1apFdP4dO3ZIHjdunOR4lrBOFrpErHvs7hs0ZcoUyXPnzpX8zTffWP30uv4+ffpIbtiwodXvtttuk3zo0CGrTe/boPfiQPLS+yXVrl3batPlqFE8ve9FqVKh3bv/+OOPYzUcxBGlZ2PjxRdfDNimy4EPHz7cahs9erTkmjVrhvRc+jETJkyw2vQ+fNHw17/+NegxIjd16lTJQ4cOtdpq1KgR8HF6f0B9Dncfh1TVokULySNHjrTa2rVrJ9ktSx9J2eEbb7xRcocOHay2yZMnSy5XrlzAc+i9dC5cuBD2GBBdep8xY4ypUqWK5N/+9rfxHg4Udw+hQYMGST5x4oTk1q1bx21M8cRMGwAAAAAAAA/ipg0AAAAAAIAHeXZ51E033WQd16tXT/K0adMk61Js4di2bZvkV1991WrTpd8o6x05PSXcGHtaW9euXSXr0qPGGFOrVq2Qzq+Xa2zcuNFqCzZVHclJL70LdUkP/l92drZ13LZtW8n6Pe7ixYtWvzfeeEPy8ePHYzQ6xNNPf/rTRA/Bl44dOyY5MzPTaktPT5fsLvPV1q5dK3nLli1W26pVqyR/9dVXkqO9HAqJ8fnnn1vHwa5TvpcGp38j1K9fP2C/3//+99bx2bNnw34uvdzqzjvvtNrc7QO0TZs2SX7zzTclu99lkXj6dXS/IyH2srKyJD/11FNWm35tZs2aJfnw4cOxH1gC8MsHAAAAAADAg7hpAwAAAAAA4EHctAEAAAAAAPCghO5po0vlGWPMzJkzJbt7MESyDl/vefL6669bbboktC63h/Bs3brVOt6+fbvkpk2bBnycLgfu7l+k6XLgS5Yssdp02UuklmbNmlnH8+fPT8xAkkSFChWsY339aUeOHLGOhw0bFrMxITE++OADye7eUOyVEbmWLVtK7tKli9Wm97rQZUmNMWbu3LmST58+LZm9E1KL3o/BGGMefvjhBI0kdehywbGgr/U1a9ZYbfr7K2W+vS0jI0Ny586drbaVK1fGezgpZ/369ZL1/jbGGLNo0SLJL730UtzGlCjMtAEAAAAAAPAgbtoAAAAAAAB4UFyWR919992Shw8fLvmuu+6y+lWpUiXsc58/f946njJliuTx48dLzs/PD/vcKJ5bVu3RRx+V/PTTT1tto0aNCumcOTk5knUpxP3790cyRPhEWlpaoocAJL3c3FzJ+/bts9r0MuQaNWpYbSdPnoztwJKcLhe8cOFCq809Bly7d++2jvfs2SO5bt268R5OUuvfv7/koUOHWm39+vUr8fkPHDggWf8G0UtPjbGXvOn3XXhb9+7dreOCggLJ+rpEfMybN0/ymDFjrLbVq1fHezgJxUwbAAAAAAAAD+KmDQAAAAAAgAelFRYWht45LS30zsrEiRMl6+VRwbhTRd955x3Jly9fluxWhTpz5kwkQ/S8wsLCqKwNifQ1RFR8WlhY2CQaJ0qV11FPc9ZVVmbPnm31c5fixVIyXotutailS5dKbtGiheQvv/zS6lezZs3YDixxuBaNfX0ZY8ycOXMkb9682WrTywzcz+dEScZrEVfhWvQBr16L6enp1rF+zxs7dqzVVrFiRcmrVq2SrKvXGGMvyTh27Fg0hukVXIvm6kq1enlip06drLaDBw/GZUzh8Oq1iLAUeS0y0wYAAAAAAMCDuGkDAAAAAADgQdy0AQAAAAAA8KC47GmDkmONoi+wXtgHuBZ9gWvRGJORkWEdL1u2THLbtm2tthUrVkgeMGCA5Pz8/BiNrnhci77AtegDXIu+wLXoA1yLvsCeNgAAAAAAAMmCmzYAAAAAAAAeVDrRAwAAAPGXl5dnHXfv3l3yuHHjrLZBgwZJHj16tGSvlP8GAADwK2baAAAAAAAAeBA3bQAAAAAAADyImzYAAAAAAAAeRMnvJEEJN1+gnKIPcC36AteiD3At+gLXog9wLfoC16IPcC36AiW/AQAAAAAAkgU3bQAAAAAAADwo3JLfp4wxB2MxEASVFcVz8RomDq9j8uM19Adex+THa+gPvI7Jj9fQH3gdkx+voT8U+TqGtacNAAAAAAAA4oPlUQAAAAAAAB7ETRsAAAAAAAAP4qYNAAAAAACAB3HTBgAAAAAAwIO4aQMAAAAAAOBB3LQBAAAAAADwIG7aAAAAAAAAeBA3bQAAAAAAADyImzYAAAAAAAAe9H/ONS3Pq2S2rgAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 1440x288 with 10 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "MztHkQkpIvJe",
        "outputId": "6f3c50e8-84f6-4a05-de3b-219c7e214499"
      },
      "source": [
        "print(x_train.shape, 'x train samples')\n",
        "print(x_test.shape, 'x test samples')\n",
        "print(y_train.shape, 'y train samples')\n",
        "print(y_test.shape, 'y test samples')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(54149, 28, 28, 1) x train samples\n",
            "(10000, 28, 28, 1) x test samples\n",
            "(54149,) y train samples\n",
            "(10000,) y test samples\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ncRAeDKNRhEo"
      },
      "source": [
        "#Preprocessing the data: \n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ilPSXMHBRoeh",
        "outputId": "6665d670-409a-4249-9953-3420a0879eb8"
      },
      "source": [
        "#change the format of MNIST DATA : \n",
        "\n",
        "x_train_rgb, x_test_rgb = np.squeeze(x_train,axis=3), np.squeeze(x_test,axis=3) #(54149,28,28)\n",
        "print(x_train_rgb.shape)\n",
        "print(x_test_rgb.shape)\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(54149, 28, 28)\n",
            "(10000, 28, 28)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qu9g9MsvTEZ3"
      },
      "source": [
        "#Repeat the image array 3 times on a new dimension \n",
        "x_train_rgb, x_test_rgb = np.repeat(x_train_rgb[..., np.newaxis], 3, -1), np.repeat(x_test_rgb[..., np.newaxis], 3, -1)\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "TjLmSjajTM38",
        "outputId": "08c2474a-4875-4a7e-8744-afbdc7091245"
      },
      "source": [
        "print(x_train_rgb.shape)\n",
        "print(x_test_rgb.shape)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(54149, 28, 28, 3)\n",
            "(10000, 28, 28, 3)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 486
        },
        "id": "fkqSMFNQTa8L",
        "outputId": "8bafe353-9c31-4c33-ecfe-ffc69cb97d3d"
      },
      "source": [
        "import cv2\n",
        "import numpy as np\n",
        "\n",
        "\n",
        "#n=x_test_rgb.shape[0]\n",
        "n=250\n",
        "image_test=[]\n",
        "for i in range(n):\n",
        "  new_image_test = cv2.resize(x_test_rgb[i], dsize=(IMG_SIZE, IMG_SIZE), interpolation=cv2.INTER_CUBIC)\n",
        "  image_test.append(new_image_test)\n",
        "  x_test=np.array(image_test)\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "error",
          "ename": "NameError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-10-886a2778b040>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     16\u001b[0m     \u001b[0;31m# display original\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     17\u001b[0m     \u001b[0max\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m     \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_test_array\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     19\u001b[0m     \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     20\u001b[0m     \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_xaxis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_visible\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
            "\u001b[0;31mNameError\u001b[0m: name 'x_test_array' is not defined"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 1440x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 302
        },
        "id": "9zTxShyOTypf",
        "outputId": "8cd17345-46bc-480b-9861-e3199535b5af"
      },
      "source": [
        "plt.figure(figsize=(20, 4))\n",
        "m=10\n",
        "for i in range(m):\n",
        "    # display original\n",
        "    ax = plt.subplot(1, m, i + 1)\n",
        "    plt.imshow(x_test[i])\n",
        "    plt.gray()\n",
        "    ax.get_xaxis().set_visible(False)\n",
        "    ax.get_yaxis().set_visible(False)\n",
        "#plt.show()\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
            "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAABG0AAABwCAYAAACkaY2RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOyd93MTW7b9l3JopVYOVrCcjQkXmHnz6v3/r+rV986FSzKOkmUrZ7Vy/P7A7E1LlomWMXA+VdSdAdsItU73OXuvvZZmNptBIBAIBAKBQCAQCAQCgUBwv9D+6BcgEAgEAoFAIBAIBAKBQCC4jijaCAQCgUAgEAgEAoFAIBDcQ0TRRiAQCAQCgUAgEAgEAoHgHiKKNgKBQCAQCAQCgUAgEAgE9xBRtBEIBAKBQCAQCAQCgUAguIeIoo1AIBAIBAKBQCAQCAQCwT1E/zVfrNFoRD74D2I2m2lu4+eIa/hDqcxmM99t/CBxHX8cYi3+Eoi1+Asg1uIvgViLvwBiLf4SiLX4CyDW4i/B0rUolDYCwd1x8aNfgEAgACDWokBwXxBrUSC4H4i1KBDcD5auRVG0EQgEAoFAIBAIBAKBQCC4h4iijUAgEAgEAoFAIBAIBALBPUQUbQQCgUAgEAgEAoFAIBAI7iGiaCMQCAQCgUAgEAgEAoFAcA8RRRvBnaDRaKDR3IqhuUAgEAgEAoFAIBAIBL8FXxX5LRB8K7PZfHKcVqtdWsih/09/pv6l/ln0azqd8s9W//7i3ycQCAQCgUAgEAgEAsHPhijaCO4cnU4HSZJgtVphMBgAfCi4aLVa6HQ6GAwGmEwmWCwWWCwWmEwmGAwG6HQ6TKdTDAYD9Ho9dDoddDod9Pt9TCYTjMdjDAYD9Pt9DIdDTKfTH/wvFQgEAoFAIBAIBAKB4NsRRRvBytBoNEsVLwaDAbIsw+/3w2q1sjLGYDDAaDTCYrHA5XLB4/HA7XbD5XJBkiQYDAaMx2MoioJKpYJisYhCoYB6vc7FmkajgWaziel0iuFw+AP+1YK75qbPmUAgEAgEAoFAIBD87IiijWBlLDtI6/V6eL1exONxxONxOJ1OTKdTTKdTmEwmmM1m2Gw2+Hw+RCIRBINBeL1e2O126PV6jMdjNJtN5PN5XFxcIJ1Oo1gsotvtQlEU5PN56HQ6jMdjjEYjcZj/yVkcn1t2PcU1vls+5U0lroVAIBAIBAKBQHC7iKKN4E7QarWwWCwIhULY3NzE9vY21tfXIcsyptMpxuPxtaJNKBSC1+uFyWSa+1myLMPn88HtdkOWZS7aNBoN2O12AECv10O73cZkMvkR/1zBd0CfFbvdDpvNBqPRiMlkgn6/j263y+Nvo9FIjMDdARqNhlVwZrMZZrOZRxa12g9e9pPJBMPhEL1eD71ej6+RKOIIBAKBQCD41Vn04KT9j/r/q/esGo0GRqMRJpMJev2H4zhZPYzHY25oL36f4PdFFG0Et8bijUr9+w6HA9FoFLu7u9jd3UUymUQ0GmWlzXg8hl6v5/Eop9MJt9sNg8GwtLNvs9kQDoeh0WjgcrkwGAxQq9UAAK1WC+VyGaVSSRRtfkJ0Oh28Xi+2traQTCbhdrsxHA5RLBZxeXmJfD6Per0ORVEwGAx+9Mv95dHpdLDZbJBlGV6vF8FgED6fDw6HA2azGbPZDL1eD9VqFfl8HrlcDoVCQSjd7iE33aMFAoFAIBB8O+TNSc0s+j0q5FARhtBoNLDZbPB6vbDZbLyXUhQFvV6Pm5Oj0ehH/HME9xBRtBGsHJPJhEgkgoODAzx9+hTb29uIRCLw+Xyw2+2YTqcYjUbQaDTQ6XTQ6/VzleebDhhWqxWBQAAOhwOTyQSyLKPf7/Ph3mQyCV+bnxCj0Qi/34/Hjx/jX//6F6LRKDqdDo6OjvDixQvMZjOMx2P0+31RtLkDDAYDnE4nIpEINjc3sbOzg3g8jkAgAEmSAHwolGYyGRweHsJkMmEwGKDdbov1d88Q/k8CgUAgENweGo2Gm85GoxE6nQ7AvNJGo9FgMpmg2+1iMBhgNpvBZDLB6/VifX0dXq8X0+kUzWYT1WoVrVaLlcukXh6Px6IR/ZsjijaCW2PZYcBkMiEej+Pg4ADPnj3Ds2fPkEwm4XK5YLVa525uVJFW/zy6Samr1VTY0ev1cDqdcDgcmM1msNvtaLfbyOfzyGazyOfzGAwGGI/HIgb8J4CuryRJCAaD2N3dxT/+8Q+Ew2F0u11otVqUSiXk83lUKhX+7AhWC20skskkHj9+jD/++IMVUJT+NhgMEA6HYTQaMRwO0Ww250zBhbT3btBqtTAYDDAYDNDr9ZjNZhiNRhgOhyy3vk1ozVJnke6z4n57P6Dro/5MaLVaVreORiNMJhOW4Itr9n3Q4Y1+UZF0Op3y+6weefhR7zetWfXrE9deIFgOrRdaM1qtFnq9nu+rFosFkiTBYrHAbDbzvoiet+qijaIoqNfrGI1GkGWZ7SICgQAAoF6vo1KpoNlsYjAYoNvtolaroVKpoFarQVEUsZ/6jRFFG8FKMBgMsFqtCIfDePjwIR49eoS9vT0kk0mEQiFW0VCRZpnhbL/fR7vdRq/Xw2QygVar5ShwSZJ4A0pfb7PZ4Pf7EQ6HEY1GUSgUMBgM0Gq1OBZccH/R6XQwGo2w2WxwuVycHKbX62GxWDginh6cnzLEFdweGo0GdrsdkUgEW1tb2N7ehs/nm7sGOp0OkUiEU93y+TzK5TImkwl6vZ5QRN0BWq0WVquV/cBkWcZkMkGpVMLV1RUqlcqtb/Z0Oh1MJhOMRiO0Wi1GoxEGg4EYjbsnaDQamM1meDweRCIR+P1+WCwW9Ho9lMtlFItF1Ot19Ho9LuAIvh2NRgOn04lAIAC3281F7E6ng06nM9c5HwwGXMi5a3Q6HcxmM/R6PfuRCQ+y20WoGn8dtFotJEmC1WqF2Wxmz0Wr1QpJkmC32+FwOCBJEsxmM4xGIwBwMZQKPqPRCK1WC7VaDf1+Hw6HA/F4HMlkkvdU7XYbjUYD/X4f0+kUvV4P2WwWR0dHOD4+RqfTEUWb3xhRtBHcOrRxIQ+bJ0+eYGdnB9FoFLIscwdqGfSQGwwGqNfrLBMcj8cwGAyw2WxwOp2srNHpdHPdXovFAo/Hg1AohEgkAkVReFMiNqT3F+pQWiwW2Gw2VmHRNev1emi1Wuh0Ouj3+8KE+A7R6XSQJAk+nw/hcBiyLC/1RjEYDHA4HPB6vQgEAvD7/VxwFQeC1UIKRJvNhng8jidPniCRSGA0GuHdu3fo9/uo1Wq3vmb0ej1sNhtsNht0Oh36/T4URUGn0xGFmx8M3VNtNhtisRiePn2K/f19yLKMer2Oo6MjvHnzBul0GrVaDd1uVzwjvxO9Xg+/34/9/X0kk0lYrVZ0u1322KvVaqjX63Nr8a4VN1TIczqdPEKuKIoYvRAIbsBgMMDlcsHr9cLpdEKWZfj9frhcLjgcDsiyDJfLda1oQ+uJGo3j8RitVgv1eh3dbpdVzMFgELIsQ6fTYTgccpOLir6np6fQarWoVqvI5XIYj8c/7L0Q/FhE0UZw6xgMBvh8Puzu7uL58+d48uQJotEoPB4PLBYLgPmNCv1vckzv9Xqo1WooFAooFotoNBoYDocwGo1wOp3w+Xx8KCQlBhVuzGYzXC4XAoEAQqEQKpUKFEVBq9USZl73HCrKuVwu2O12GAwGlvDXajWUSiVUKhXU63V0Oh3x4FohVJQxGAzweDwIBoMIhULw+XxsDq4eaaSigSRJcLlc8Hg8cLvdqNVqaLfbP/hf82uj1Wqh0+m4YL2xsYHnz59jf38fvV4P0+kUx8fHK1GmGY1GLtSZzWYMBgM0Gg00Gg20221W3YgC692i0Wi4GxyJRPDgwQP861//wvPnz+H1elGr1eD1eqHVankNT6dT9loQfB1UIKOx3ufPn2N3dxeSJLHfVzqdxuXlJSaTCdrt9p0qRampRYV1v98Pj8cDg8EARVFQKBQ4/U/wadTq8MVrqB4zE+vo5+Emxb/BYIAkSfB6vYhEIgiHw/B6vfB6vQiHw/B4PBya4nK5YLFYrnnakNJG7WnTarXQ7XYBfPDmJJWO+vt0Oh0MBgOm0ynsdjtKpRLevHkzZ3Is+P0QRRvBrWO1WhEMBrGxsYH9/X3s7e3B4/HMFVdmsxkmkwk6nQ4XVRqNBrrdLnq9HhqNBorFIsrlMs92ktN6JBLBxsYGBoMBdDodXC4X32ypg+TxePiGajabxSjNTwAdPB0OBxwOB49DTadTtNttVCoV5PN5lEolUYRbMXq9ntU1e3t72N7extraGpxO59zXqX2oaFTGYrHMbV7E5nW1ULHa4XDA5/NhbW0N6+vrSCaTUBQFXq8XFovl1u+BFFfqdDoRCoXgcrkwm83QarVQqVRQLpdRrVZRr9eFIfUdo9Vq4XA4sLa2xmrXg4MDJBIJNhbX6/Vzh0xSM4r1+nVQ4TIYDGJ/fx///Oc/8ccff2B9fR0WiwWNRgNmsxnj8RiKoqBYLGI8HrPP1KohnzhZlvn+EI1G4Xa7MZ1OkcvloNfreWRLFFhvhu61kiSxqsJgMPA4P+1l+/3+j36pgs+w6E1D0dt0TU0mE1wuF2RZhtvtRjAY5LFHt9sNv98PWZZ5NOpLzxl2ux1er5c95sijc1kxhl4jFVlX8RwX/FyIoo3gVqHNos/nQzAYRDAYvDG6ezqdolKpIJVK4fz8HFdXV2i321zMaTQaPBJD8XdGoxGxWAztdhtarRZ2ux02m42Nv7RaLYxGI8+dUgqVuNHdf6hbuXjwB8CR0oVCAeVyWXQEV4zBYEAgEMD29jYePXqE7e1teL3eax2kRagYSwop4ZWwesjri2TaTqcTFosFOp1uzvR0FRgMBtjtdvbRMZlM6PV6KJVKkCSJC66iaHO3UDMjkUjgwYMH2N3dRTAY5GehVqtFJBLBkydP0O120Ww2kc1mxXPyG7BYLEgmk3j06BGeP3+OR48eIR6Pw+1286FQURQ4nU5Wj3a73TtrOtC4+ubmJvb29rC3t4d4PA6Hw4F2u42joyNes6RqFiyHGofhcBjhcBg+nw+SJGEymaBarSKTySCVSgnF2j1HXbCxWq18jqBiDBVmaByKvsbpdHLBjhqLZrOZCzZfev/U6XTXgjQ+9b30s8X9WSCKNoJbgW4oVquVK9MkGVSPUxCTyQSNRgMXFxd4+fIlXrx4gZOTE3Q6HZYRUqQzmVsOBgNotVooigKr1YpQKIREIoHhcMhFG3VyiUhE+Lkg82qHwwG73Q6z2QytVovhcMjd+2KxyLJSwWrQaDR84Hv48CGePHmCjY2NOUXbMiiRhrwRaP2JjcZqIQNiWZbh9XrhcDjYX6bdbqPb7a6so08FI7vdzp3H2WwGj8cDnU6HVquFQqGwkr9bcDM01ri+vo79/X1sbm7C6XTyc5gK5Gtra9jY2MDx8bHo4n4DWq0WPp8P+/v7+J//+R/813/9F6LRKL+XZDZMxezBYMC+bHcFFeD39/fx3//933j8+DEikQgMBgNKpRJ6vR5SqRSHOwyHQ2GiewOSJCEcDmN7extbW1uIx+NwuVwYj8e4uLiAVqvllB/x/t1f1OOC1HTw+/2IRqPY2NhANBpFKBSC3++H1WplI2FK4FMn2NKI6fey7GfQ/bjf76PX6wlLAMGPK9qoI9RoIdBiALD00E2xiXQwEPOj9wdSuNhsNj48+Hy+awc9irBrtVpIpVJ48eIF/vzzT7x48QIXFxcYj8f89TcVXTqdzo1eCTSX3+l0+MAiOv33HzJ6C4fDiMViCAaDkCQJw+EQ9XodxWIRpVIJzWbzR7/UX4rFezAA2Gw2bG9v4+DggFPfIpEIjEbj3GZ+Op1eO+Sp1VKSJMHpdLIZMY04ipjZ24WSLcgoOhAIsEm7uoC2KqgIQClFVHjt9/u4vLyEyWRa2d8tWA4lKcbjcWxsbLDKhqBrZjQaIUkSTCbTtc6vYDnqvavX68X+/j7++OMPPHv2DBsbG9xAInVopVJBNptFNptFqVSCoih3prLR6XTw+XzY3NzEw4cP8fTpU36Ns9mMXysh9tMfoeeiwWBgv7Z4PI7t7W3s7u5ie3sbyWQSHo8H/X4fkiShVCrh8PBQFD/vObSGabQxHA4jmUxiZ2cH+/v7iMfjPFZ8Wx4y6j2P+hf9mfq/Go2GP3ez2YzPMsLc/8tQexSR599ioU0d4Q58EBJMJhOMRqO5GgP9ui/8sKKNeozF6XSyC7fVaoVGo2F1BUU9z2YzDAYDnhlVFIUj0cSH+MdD15M27KS2sVqtc183GAyQz+eRSqXw5s0bvHjxAu/fv2cjvE9B5orBYJC7upIkzW08RqMRFEVBtVpFuVzmONP7tOgE17FYLPB6vXzIiEQisFgs6Ha7KBaLKBaLnCImuB1IJWGxWOB0OmGz2WCxWOB2u7Gzs8Myer/fD0mSWAH3qfst+dqQIbHP52MjPkVR+AE4GAxEMfUWofl7n8/Hkm6LxQKDwTC3MbltKNJdURQebTWZTHA6nSwlVxcLBKuHEqMcDgecTiccDgePRanXG/lwkCmmOBB8GWTmK8sy1tfX8fjxY+zs7CAYDPJehMZlUqkU0uk0Tk5O8ObNG1xcXKDZbK78faZDn8PhQCwWQzKZRDKZRCgU4tfYarVwcXGBTCaDUqmEdrstfOL+Az3HyGRWlmX2aUwkEojFYohGo4hGo7Db7ej3+ygWi6ywEuvofkPBCWQ07PP5kEgksLOzw6Pgt2mroFYcj0YjLgx8qqFiMplgs9kwmUygKAp6vZ5Yn1+JRqPh/SiNtNntdlgsFk75Im838qRqNpuo1+vsTTUcDu/V+fGH7aYMBgMsFgtkWUY4HMba2hqCwSBcLhd0Oh16vR7a7TbG4zFXOhVFQalUQqFQYOk1fehFpPOPhW6CZOZlMpnmfGyoqqwoCtLpNF6+fIl///vfODw8RLlc5oi7m6CKeCQSwcHBAXZ2drC2tgZZlufGr0ajEVqtForFIvL5PCqVCjqdzr1adIJ5tFrtXGeYNpdGo5EjDkulkhiLumVorMbj8SAUCnHspM/nYyNbn88Hk8k0t3m5aUOqjm13Op3w+/2YTCawWCyQJIkNxcnwFICY/b8F1J42NJIqSRI/N1f5/tL9tlKpoFKp8DOc1Fa0KRIHmdWj9migJhiNmKqhMcbBYIBsNot0Os33V3GNPo/RaITf78fm5iYODg7w+PFjxGIxblCNx2Mu2Lx58wbv3r3D4eEhTk9PUa1W7+SeR55GkUgEm5ubSCaTCAaDsFgsmM1maDQaODw8xJ9//olXr14hnU6jXq+Lpgg+Gqzb7XYEg0Ekk0kkEgl+JgYCAS6I2mw2VuSQ8b5I9/k5IAWG2Wzmotza2hqHpgBf9+xcVuBZnBRRjyxTQUCdwKnGZDKh0+lgMpmgXC6j1WqJRtdnoD0o7Tn0ej3sdjvcbjc8Hg8CgQACgQBcLhdsNhusVitMJhMmkwlarRZKpRJyuRyurq5QKBS4oUHX4Utfwyqv0Q8p2pCU2uv1IhaLYWtri7vrtGA6nQ4nxJBErNlsIp/Ps9S00WhgNBpxjJrasJak+6uWKaolb2rp2+8KFdAUReHZXpfLBQBoNBo4PT3F27dv8ddff+HFixfI5XJftFGw2WyIxWLY2dnBo0ePsLu7i7W1NTgcjrlrPB6P0W63Ua/XUa1W0Ww2WZEluF+QdFEd0x6LxRCLxeDxeNBsNlEsFpFKpXB1dSWSTW4Z2tjH43Hs7OwgkUjA6/XC7XZztKXT6bw23qK+Buq1p97s+v1+jEYj2O12KIqCWq3GD8Bms8nx7bVaTRTjvhPadKo3JHq9/pqnzSrWDpmqNptNKIqC4XDIxXtJkubMxAWrRafTsT8DeTK4XK5r7/90OuUN6snJCU5PT1EoFETR5gtQJ1ju7+/j6dOnePToEcLhMCwWC0ajERdsaJ/z+vVrnJ6eol6v39n7azabEQqFsLu7i4cPH2Jraws+nw9arRatVgsnJyf466+/8Oeff+Lw8BC5XA6KotzJa7vvqEe1aUx4e3sbGxsbXJyj4oxOp+OGJTUrPB4PJEkS7+cPgM58anXppzwuaUKAEp28Xu9cE/imsIVl402L/5t+BhXI6UzbaDSgKAq63S4XcOn1qvdT5PE4nU6RyWSQz+fRbrfFWeY/0HtFzQqTyQSr1cqKcVIbkgLZ7/dzbLvH44HD4YDNZuOiTaPRQD6fRyaTYXVds9nk86SiKKwQVxdw6LN1V+f/H1a0sdvtiMViePToER49esRdXdpw9no9dDodVtpMp1MoioJyuczjEo1Gg1NKSNZEi4G+Tz2n/bVv5jK/hkWj2+FwyAUjiqumDfLvtAGaTqcYjUY8x51Op2G1WtFutzlaslKp4OTkBK9evcLJyQkKhcIXy/3ogBmNRpFMJrG2trZ0Q6q+UZIEUYzQ3U/U6iyK+qabpdFoxGAwQKlUQiaT4U2leGDdLna7nSX+29vbPFZDnQjqHt6EeqNCUlSn04npdAqTyYRgMMjKGiqq06HGYDBgOByKoup3QHG+Xq8XoVAIoVCI3/9Go4FyuYxGo/FZJeO3or7XUnypJEmwWq08HrXMiF5w++j1erhcLsRiMWxubiKRSLBSTg0lehWLRWQyGVxdXaFaraLf74tr9Blo9Mzn8yEWi7Fpqfo9bjabSKfTePfuHd68eYPz8/OlBRv1ofK2MZlMnP734MEDrK+vw+l0Yjgcolgs4vz8HMfHxzg5OcHl5SV38QUflFRerxcbGxt8PllfX0c4HIbD4QCw/Gxgs9kQCoWwsbGBcrmMi4uLr+rQC74fUm2TTxcAttro9XrodrtzTXZSY5jNZtjtdkiSNPfzFq8zqfkpGIVEA5SUSaNPdLCnMxH9InuPdruNXq/HRRsq/qnR6/UwGo2YzWacsttsNsVe6T+QvQopS0ll7HK5YLfbWXFDI47LlDZmsxl6vR7j8RitVgtOp5M9WWOxGO9bKclYLQ6h66u2bLmL8bUfVrQh5cTBwQGePn2KcDgMq9UKo9HIRRo6cAMfNhq9Xg+hUAitVovfTFpAVMFsNptc7CHzocViy5e+Rvrv4mgAjWSNx2NWlJRKJZRKJcxmM76gv9MGiHwq1NGhiqJwKgHJzwqFAi4vL1GpVL5aikujHFTcW5Z2QWZTagO5VXo6CL4dKtrQ9TIajXzNptMpOp0OqtUqSqUS6vU6P3AFX8+yA8JsNoPVasXa2hr29vawvb0No9GIyWQyN9ai/vplqOW9NKZDhxvaxJAh+GAwQLlchslkwmAwQL1eR71eF9f1G9Hr9Vzs9Pl8cLvdMBqN6Ha7KJfLyOfzKz+Qq9ex2Wzm+XGSHt+mN4DgZtQjMclkEtFoFLIsX/MUIi+ber3OijdFUcRozGegMUS1X5DT6WSDdqLdbiObzeL09BSZTAaNRuOT985VoFayU/FOp9OhVqvh6uoKmUyGjZGbzaYo2KgwGo3w+XxIJpPY29vD1tYWm9IC18cf6NqTumlnZ4cP11dXVyI84Q4xGAw86kQFNlKC0j6j1+tdU9586VTGbDbDcDhEs9lkFf9i8Em73Uar1eJCDQWnUIOKfp+KPGqljRq16KDT6aBWq4mizX9Qj/b7/X6sra0hHA7D5/PB4/FwQ1+v10OSJC7kORwO9s5VPxdJpaoOdSBPG/J9o+tL/5t+P5vN4vLykq/nqvlhRRuTyQRZlrk7KMvy3IeW5kTVmM1mOBwOBAKBue4ejeOoizlqpY36JnuTtP9zr5deE3UWSVlSq9VweXmJdDoNvV7PxZrfrXtM12E8HmM4HKLdbiOfz8Nms8FgMHCEN93UvuYATlHii0abi5sleh3qQ6SYL76/0H3AbrfzfDh1R+hAT8XQWq0mDKW/k8UDgtlsnvMR8ng8bAKvTohaLPR86ueSTJw8qKhQTj+T5rO1Wi2P79CGhIz5BJ+HFGputxtra2tYW1tDIBBg48JKpYJ0Oo3z83MUCgV0Op2VHBDJsNNqtcJut7PkeNHoTxRtVo/JZILH42Hj2Wg0ysplNdPpFN1uF9VqFfl8HoVCAc1mU5hcfoJFY1qPxwOn08nBGQC4YVcqlXBxcYF0Ov3J5tRtr0d6HRaLBaFQCLFYjBUiFosF7XYbhUIB6XQaFxcXyOfzqNfromCjQqfTQZZl9gLa3t7G2tranKL7putGRRu1gkKr1SKVSq3s/iv4AI3C+P1+9iCSZRnj8Ri1Wg35fJ5tNCjghhKCBoMBj8C0Wi3IsszBN5PJhBUbpFCs1WoolUool8usumg2mzz21Gg0UK1W+SxK4gIaoaFGFjX/b/K0oX8XAH69yxJzfxfoPEcNwUgkgkgkwjHtFJrh8XhYrb8Y006/lp0LSVVO4/1qcQYV27rd7pzqplKpwOl0AgBP2qx6D/vDjIjpw9vv99HpdGA0GucOCBS/BXw0FyL1BMmi1Pj9/rlKJo0o0WJYnHP8HMvmFqloQ69zPB7zRTObzdBoNOynQxf7d7tRk9kWHboXI9y/Ze6PNiGRSATBYBA+nw82m21pwYYMrOkw2O/3f8vr8DNAN8hQKIR4PD4nP26326hUKigUCnNqgd/1gfW9LBarzWYzNjY2sLOzg/X19bmiORXLl90Db1Igqn82bXJuwmq1cnGbZpFPT085IUxc40+j1WrZ6Dkej+Px48fY3d1FOByGyWRCq9XC5eUl3r9/j8PDQ2QyGSiKsrKijSRJLCmWZZm7WLRREkrH1aMek4tGo4jH43NpRmpmsxk6nQ6PR2WzWWFC+xnI0NLj8SAYDHKCpc1mA/BxbCKTyeDk5ATpdPqrxr+/F51OB5vNBpvNhmAwiCdPnuDRo0fY3NyE3W4HAG6kpdNpTozqdDp38vruO9TgpRH8RCKBRCKBcDh87axxEyaTiX2DgA+HQBq3yGaznP5DKgv1GUfw7VDjLxAIYGtrC/v7+0gkErDZbFAUBRcXF6wspIM5vff9fh/NZhO5XA6np6cwGAzw+XwYjUZoNpsYj8ecsEleYJVKBcVica5o02q12P+k2Wyyh9/i+eO2nsGrHK28T9A+ggz2qSlEKkJqWK2vryMajcLj8cBut8+F4LjexugAACAASURBVKhRiwum0+k1E/FPWQFQzYKuc7/f5wYkjb6RTcsvZ0Q8m83Q7XZRKBRwcnICvV4Pj8fDb9h4POZqNfDRkIncnq1WK8uvaVNCHV7yY1DPLdKff63qYtG/hn6PYsin0ynMZjPfACiSXF2V+12hotb3bgRpNjsajXK6zbKxKLouZPZVr9fRaDREjOU9RqvVciLY+vo6IpEI7HY7RxzWajXUajU0Gg1hknlLkHw4Go3i2bNn2N/fh9/vn1NDLBZoCHXx+msO4YtfazabEQwGed6YvHNozFXwaagbnEwm8fDhQzx79gy7u7vwer3QaDRoNBp8eDw9PUU+n19Zp5e6Xh6Ph9UH6gaMKMDdDSTrpkMidRoXobU4HA7RaDRQKpVQrVbFM/IzUKHb5XKxYanaU48KNm/fvuUCdL/fv7PXRwWDWCyG7e1tPH/+HA8fPoTf74dGo8F4PEaz2US1WkWlUuFnqlifH6BnUTgcRiwWQzgcnru+n3reUXOYDpbAh6YzKVmj0SguLi5QLpf5wN9oNNDr9YSP1HdCVhuJRAJ7e3t4/Pgx9vf3EQqFoNVq2bz38vLymtkvKePIY0+n06Fer0OSJC7EjMdjHvnVarXodruo1WqoVCqo1+tclOl2u5wIRdME4tp+mi8pPJFi2+Vywe/3IxQK8UhUNBpFIBCA1+tFIBCAz+fjs+Gysf7RaMSja91ul20AXC4XpxCrv2cxZINUPuqQBa1Wy8/RcrmMarXKNgCrKsj+sKJNq9VCOp2GVqtFtVrlN1yn07E3Srvd5oelw+GALMtsFuVyuXh2jcYqqChDM/Ykt6f//y3dPrVChKrxer2e/67pdAqfz8cSuWKxyPGnwnzx+6DZQoqsJCUGLS71+0vSxWq1yg/HRqMhpL/3GDLOJHPpSCQCm83GpmBqGaJYR7eDzWZDMpnE48eP8Y9//AM7Ozss7wRwY0focwobKprSLzLXI4+ixZ/ldDp51NVisaDT6eDq6grZbFYcJD4BjYqSyeiTJ0/w8OFDlvArioJcLodUKoXz83M2GV2VMT5tqnw+HwKBAJxOJ7RaLUu51RJwwe2jHomheX31mOniHoT2M9RgqtfromDzGWjNybIMv9/PEnybzQadTofRaISrqyu8fv0aL1++5KSou7qPUcEuHA7jwYMHePr0KZ4+fYpkMslFB0VR5g4W7XZbKJBVkAcQjQqHQiFIkvRFnm70Z9S1lyQJwWCQTcE3NjZY3XR+fs5jG7Va7VoSjeDr0Ol08Pl82N3dxT//+U88e/YMGxsbsNvtXEghM99lo0XD4RDVahUajQbtdhvpdBo6nY6bv5PJBBaLZa6xRFYcZMNBex86b5JB7Sr51dctjbupLVQSiQTW19cRDAbZUJimXKxWK0+7APP72NFoxGbC1WqVVVCTyQR2u533TiT2oFAhUi/Ss5RsTwaDAabTKfvleDwehMNh9hyikbxVJX39sKINbdJ7vR6KxSLcbjdsNhtHldbrdbTbbQDgJAp10UaWZTZelGWZZVEmkwkajYYXV6/XY9MiugCfinOj10dqH0qiMhqNbECnlkuS14qiKNw1NpvNn5RZCT6PxWJBOBzGxsYGHjx4gIODA8TjcciyPOdTRCNRnU4HuVyODyokXRTcXyilgTwYwuEwJEmak5mSck3w/Wi1WsiyjPX1dTx8+BCPHj1CPB7nUcNl3jXqIs1ihCZtTihJYTAYoN/v8+ZIrZAknxvqdlHh1Wg0Ym9vj7vUx8fHwrhxCdTJXXZfTCQSMJlM6PV6nFpzdHSEi4uLlY6bkScVRcSrxxvVRTzB6qDxQuo2er1eOByOa4lRashAkZSoguWQXJ6STjc2NrC9vY1kMolgMAibzcapmMfHx3j58iVevnyJs7MzVKvVO/nsk9cOGVDv7u7i8ePH2Nra4n1qv9/H1dUVUqkUUqnUXFqYYD7GfXt7G7u7u4jFYnC5XHPj/WprBPXzkZ5p9LW0Jun7IpEIQqEQq3fIZoG8OMU98tvQ6XQIBALY3d3FkydP8OzZMzx48IDHAWkvQueDbrc759cHfLg+7XYbw+EQ9XodBoOBPUzoa2mNUUiDOjVqkV+9mHKbLL5XFL9usVj4zB+JRHgMKplMYmNjA8FgkOsFtObUe1O6fmS9olbs12o1TtScTqfsXUO1gV6vh2w2i0qlwh5J6nu9WgRCI1gejwfr6+v879DpdEilUmzXctv8sKINqWnoxlWpVOaUNmRWSxtDm80Gu93OFTW73Q5ZluF0Olmyqu5+kIyt3W7zGAapcmi06abNLFXUyHF8PB5DlmXE43Gsr6/PqXooUUCtvhEL9/ugcbl4PI69vT08fPgQu7u7CIVC7PBNUBR8Pp/H6ekpR1iKGf37DyUN+Xw+9gegIgFJDPv9vtjU3BJ0AHG73fD7/fD5fHA6nZ9NiVo2JkVm46SGIg8pSkoAwIVuUkVSUVstYZ3NPiRY0aHT4/GIaPcbMJvN8Pl8SCQS2NrawsbGBvvYDAYDZDIZvH79Gq9fv0YqlUKtVlv5+0heH16vFz6fjz9Lain6lyZzCL4eg8HA77/f74fb7YYkSUuVxXTYbLfb3NASz8jlaDQaWCwWyLKMcDiM7e1tbG9vY2NjA8lkkqPUydcgk8ng7OwMqVQK+Xz+zp5bs9mM1R3q+zp1nafTKRqNBq6urpBOp+eKNsPhUOxV8WEPT54o1M1fW1vj2GA11KgYj8fcfKBGMIBr/wU+NiDpZ9Hodz6fF+//N0Br0+v1zo1EUQMK+KCgKZVKyGazKBQKqFQq7DGz+Eyk8+hgMFg6HTGZTIRif8XQeCIpdmnPSGbDgUCATYc9Hs+1dUnK3vF4jHa7jXK5jFKphGKxiHw+j1qtxglfVMDRaDSIRqM80WEwGFCv1/H+/XtcXV3BYrEgmUzOJduSt676M2K1WhGJRGCxWPjP+v0+arXar1O0AT4aApG5T6fT4coVLRKSmOn1eiiKgmq1yqZEakmUzWaD2+3mVCGDwcAXrtlsssGY1+vlGzHJttXQHBupNyi5ZjqdIhqNotvtwmazXZsXp8qe+tAiDppfD42ekZlePB7H5uYmtra2EIvF4HA4rqWB0SgNRWyu2sNBcDvQg1cdx6fe8Czragm+HZL4k1JRrXpZhN7zxT9TX5dOp4NSqYRcLsedi2aziVarxZsfKq7TwzccDiMQCPDfTdBssc/nw9raGicxiHvoPBaLBcFgEOvr60gkEggGg7BarRiPxygUCnj37h1evHiBw8ND5PP5O9lo0oHR5XJBkiT+fVGsuRvURRsqwi7zsqE13e/357zexPVZDhk7h8Nh7Ozs4NGjR9ja2uKUNhoD7HQ67FNCKYd3Oc6rbmpSQZwONOTZUSgU5mK+y+WyUNmooD2n1+udS7NVq+VpzEId10yfEYPBMPcsXXbtDQYDPB4PBoMBCoUCUqnUFxscC+YxGAw8HvzHH3/g4cOHSCQSnFbZ6/WQy+VweHiI9+/fI5VKccjB53xmxF7zx0BhM9SMohFU8rBxOBw8bUONIXqmDQYD9ogajUZoNBpIp9M4OzvD+fk5MpkMms0mj7CRYbBer8d4PEYkEkG5XIbRaEQ+n8fh4SHOzs5gs9kwm83gcrngdDpZMED1g9FohOFwCK1WC4/HA7fbDYPBMDeiXq/Xb/29+qFFG5JQ0w0QwNzFWJToL/oqkHyV5uqpm7usaEMjVHTwv6loQ6+t3+9z0Uan06HVasHn82FnZ4cPE/T6qXJOpn6KolyT4Qk+j06ng9VqZbl9IpHg+D6PxzOnZKLPCcVYnp+f4/379zg5ORFFm58AWrPkwbAYqalOGhN8O7SppwMIxSJSN35ZMhShLt6ok/MajQay2SwuLi5wdnbG0bHNZhPNZpOLNjQa5fV6edbXaDSyuz8xnU4hSRKi0Sh2d3cxGo1weXmJarWKXq93p+/XfcVgMMDr9SKRSPCIBnWHWq0WLi4u8ObNG7x8+RLv379Ho9FY+Vy92Wzm8WS1Ykv9XKdRObGObx/q9LtcLgQCAYRCIbjd7rnRDLXxMMV8ZzIZFItF4RX2GSwWC0cI7+zsYGtrixWher2ejS0rlQrv/drt9p29p2rPB+pGk3kuHV4zmQwODw/5IJLL5UTBZgHyK6Iuv9vtnhuLooYsNSVonIY8+UjhZjQa5xqK6iIOPQ+pGRmPx5FKpZDL5e7U/+hnR6PRsAn/48eP2XCbUr663S6y2SwODw/x4sULvH37Fufn5yiXy+j1euJ+dw8xGo0IBoPY2trCkydP8ODBA4RCIbhcLlaOqlOkgI/rktK8yuXy3JjbyckJDg8PcXx8jGw2y3tSAOw9pNVqYTabuU4gSRJKpRJSqRQODw85BdPtdsNut2M2m8FkMrFwgEbkKCWO/BsLhQK8Xi+rHW/7M/fDijYA5g4M30u9XkelUmElTa/X442rRqNhg1o6rCwbj1IfFinaq9/vw2g0zqUQqQ83o9EIrVaLu86FQgGNRoNHBARfDpk7URoJSX1pDpgWAKmh+v0+qtUqstksUqkUzs7OkMlk2MdB3KDvH5TiRkVWWZZhs9lYZaeeHV9WWBV8HZRgEQ6HsbW1hYODA2xubsLv9/NDaZFFhcR0OmXDvVarhUwmg9PTUxwfH3ORVFEUHrsYDofQ6XQwm82wWCxwu90YDoewWq3w+XzXRjJ0Oh08Hg82NzcxGo04RjqdTiObzf72KQxk3EwpaxsbG+y5QHGTpVIJFxcXOD8/Rz6fX+m6IcPNYDDIygOHwzGnnqIRZ+p+/c7Xb5XQeBodOG9KVxwMBiiVSkin03j//j3S6TTq9bpQs90AFcTUoRek5Kb3lvZ+6vCDu9j3USGeElRisRh2d3extbWFaDQKu92O6XSKUqmEd+/e4d///jd77Qi/sA/QM06v18PhcLBS3+PxzB22+v0+K5Wy2SxKpRLvL2msNxwOIxKJ8EGNGslkmaBei5IkIRKJYGtri8cnUqkUWq3WXGKuYB66Xna7HfF4HLu7uzg4OOCxKHWKW6FQwNHREV6/fo3j42OUSiUoiiKeQfcQvV6PQCCAzc1N7O/v4+HDh5xoSunQy5qJ7XYb+XweuVwOuVwO2WwWzWYTo9EIiqKw0iaTydy4pshaYzAY8GdjOByi1WqhUCiwnxHtk4fDIScYm0wmPqeYzWb+/NG9hBR4v1zR5jaZTqcc46XT6ebGq0hCRfI48rRRV8TV5pr0Z1TwIbNhh8PBvjvEcDhEs9mcK9rU6/W5D4JgnptkpPTeGwwGmM1m9gpajF4jsylKi6LZRVI5iY3o/UWn08FisbAXFRVsliGk+9+HWuJP3lD7+/sIh8M84rlsLS573weDAbrdLorFIs7Pz3F0dMTKtkqlguFwyMZr4/GYTeUMBgN6vR4kSUIsFkOn07lWUKCOsfrQT/fY8XiMarWKwWDw282Vk8KJvGzIzJLGM0gpRQWSVqu1cj8geh6S+V48HofX671mfEvz491uVzwLVwS9pyaTCXa7nVWLyza6g8EAlUoFqVQKJycnyGQyYgTxM6ibeGrlp/pA3+l0WG5/V+petQJoc3NzzuMqEAhwmEehUMDh4SFevnyJw8NDkRS2gMFgmEtdo7Fh9dppt9u4urrCmzdv8O7dO1xcXPBoBSncIpEIqtUq+23Qz1P7XgIfn6sOhwPJZJJHK+x2OzcohM/QcsgfLxgMsq9UNBqF3++fUzgNh0NUKhVuYGSzWfR6PXGfu2dQU8/lcmF9fR1bW1vY3NxEPB5HKBRif0tg/ry46GF6dnaGi4sLfp5RMiIV0j+3ZyRPWrJpoELReDxGs9nE2dnZnGet2Wzm0Umr1QoAc0mNaj+/VfHLFG2AjwaZpMRYZDgcsoEYff3i91Ncrdo3Rx1JTDdj9ahAsVjkil+pVBKjOZ9hmV8GAI5Qo4eexWKBVqudu+GqR9KKxSKurq5wdXXFEjdxc77f0DWWZZkd4KloQ4XTXq+Hfr/PnleCb4OiYIPBILa3t/H48WPs7OzwbK66WHbTaBQVR+v1Our1Oi4vL1luf3x8zJtYYjweYzqdQqvV8gFhMBjA5XKx902n04HL5eK/R6fTweFw8AMT+Fi0mUwm0Ov1qFQq/LN/F/R6PY+Lrq2tIRqN8ggM+SFQ04AS11Zd2CJ/uGg0ymNafr9/bg13u12OFyaPI/E8vH1IDUJJG06nc+nBkwoM5XKZizaXl5c8sihYDimu+/0+ut0ue5mYTCYe/6P9hl6vvzYeswpoxGZ9fR0PHjzgpCNKWKGOL/l6HB8f4/379yiVSmINqlCvHbUfkHosigoAqVQKr169wv/7f/8PqVSK1fdk/JzL5VCtVtFqtRCLxRAOh2EwGNi4dFG5ajabEYlE+M+BDwqRer2ORqPxQ96P+wwVyEKhEJLJJPb29jhFiHzU6FxQrVaRy+VweXmJbDaLVqslPvf3EIvFwh6G+/v72NvbQzKZRCgUmvO3BD6e04fDIWq1GorFItLpNKeNplIpXF5eotVq8fdQkMnnrr3JZOJkMPLHlWUZsixz6lg+n0cmk2F7AfqZVLhR23aQP+8qzy6/VNHmc4lQXxNBOpvNOMN9b28PDx48QCKRYEn6dDpFrVZDOp3G+fk5Li4uUCgURMHmC1GrnLRaLRtRJRIJrrgGAgHY7fa5B+l0OuXD49nZGd6+fYuTkxNcXV2JG/RPwGLRxuVycXEOAFfRySdFHPi+HeoMuN1uRKNR3ugsztrT/ybG4zGbqjebTTbZpFHE4+NjnJ6eIpPJoF6vL70+6nstGeVms1lcXl5ibW1tznyaZoT1ej2CwSDfDyilT6/XczHvd5KPU6JCKBRi8+G1tTU2vKNnUDabRT6fR6PRWHnRhgw1k8kkdnd3sb29jXA4DKvVymrXXC7HHbBKpSK8BFYEFTvVo8Q0W3+T0iaTybAxJzWoBJ9GrcJWv2fqbjF5lUwmE/R6Pej1evZOHI1GcxHBn+vC0p6I7n309Wazme8Fm5ubePDgAba2thAOhzk5lV5vvV5n37FKpXLtOq+6uPQzQGNMFosFFotlbsxhMpmgXC6zV+K7d+9wcnLCDYper8d+RsViEfV6nWOiKaWRxqwWO+/qQ+JgMOBD6KrGKX5maJR+bW0NW1tb2N/fx+PHj7G9vY1QKMT+TYPBALlcDq9evcK7d++QTqfRbDbFe3kPoT1EIpHAzs4OHj9+jIODgznvUloHo9GIVd6lUomb9OQ7c3Z2xqNR39Kw12g0nBTdarWg0Wjg9/uxubkJm82G0WgEp9PJe1F1KiY1HOnnzGYzKIrCjclVjYX/UkWb20Sr1cLlciGZTOLhw4d48OAB4vE4O5STt8PJyQnOz89RKBTu1ITuV4FM4EKhEEt9Y7EYx9m6XK5rXVwyHj48PMS7d+9wdnaGcrn8Wx3oflYWVWySJMFqtUKn02E0GvHBIpPJCPO474QKIkajEVarFVarde6Bszh2SIzHY9TrdVxdXbHMuFAooNVqoVar8Rjol86Jk6S1VCohk8mw/DUQCLCpJ/39er0eXq+XDz3U6W42m7/dGidvH5/Ph2AwiGAwCLfbDYvFwhsEUnmSEd+qlUgGgwEOhwPBYJC7+x6PB0ajkTthFH+cyWQ4Wlhw+5BUm5Kj6LNxE5Qc1Wg0hMLmC6CiidFoZI8StRcKxWxHo1F0Oh1otVq43W70+30uqrZaLVZQdLtdTKdT9nVTo/Z3pBhpi8UyJ9mnw2ssFkMikcDGxgai0eic+TTw8f5Nf+fiYUaMHX9A7Z9HBzA6hCmKgouLi7lwi0VTfFJ8U1ospWHKssyG1Tqd7tr4N32GKEqYRi/oNQnAa8xsNsPr9SIajWJrawt7e3vY2tpCJBKBJElze5W3b9/izz//xOHhIcrlsrjH3TO0Wi03GkgtuLOzg52dHSQSCXi93rmGw2w2Q6fTQbFYRDabxfn5OZupk49poVD4rrAKStc7PT3le4DX6+XC4Hg8hslkQigUYr+wxXFHuo+MRiNUq1XUajVWPYuizR1iNpvZIOnBgwfY2dlBIBCATqebM/U7PT3FxcWF2Jx+A2QslkgksL+/j4ODA55TDQQC8Pl8kCSJR6So2npxcYGTkxN+oGazWbTbbTEa9ROgfhhbrVZWVGg0Gi7IpVIp7gZ3u90f/ZJ/etReXYu/ry7iAOBxqEKhgPfv3+P169c4PDxEoVBg3xpFUZYeBj4Fyb8vLy/h8XhYQUcdR3o9wIf5dY/HA71ej3a7jVKphMvLS5jN5t/KUJDG29xuNx/K6SBAJuzUeapUKndi2Gw2m+F0OlndQakpwIdrXKvVcHl5ifPzc1xeXqJWqwkfjVuGirF0HcjQXR25vgjFnQ4GA3E9vgK16gWYP1STt8xkMuEUr1gsxmqLfr+PYrGIy8tL5HI51Go19uxT+yLSz6X7Kcn0XS4XvF4vr3tZlhEOhxEOh3mPpF5/NM5KPn90r1w2Yi64nlJJ13oymaDRaODy8pITnjqdzo3FruFwiGq1imKxiFAohGazyQbsywIxyNi/2+3O+X6J/etHSCXsdDrZcDuZTLJNBcUxt1otnJ2d4e+//8aff/6J169f83lAcL/Q6/WwWCyQZRmBQADRaJSb9GpfPFov1Oy7vLzEu3fv8OrVKxwfH/OY/ffuLWjfSxMzFK7g9/sRi8VYKUfKObfbDbfbzfYo9P3ko0PqxmKxiGazubJ6gCjaLIGqbbFYDFtbW3MFG+Cj1JgibzOZDGq1mijafCWkZlpfX8fjx4/x9OlThMNhSJIESZLmFjEd3tLpNA4PD/H27VscHR3h4uJCjEX9JJAxLsVrUhqHyWTCeDzmLv3JyQlHSYtY2q/nJon1Mg8v9YOn2+1CURTkcjk2sHzx4gWOjo7m1ti3JLORCuPi4oJ9BOhwYrPZrnWeyTslFovh7OwMDofjTjwj7hPUXff7/QiFQpzSpNPp0Gw22Yzv+PgYV1dXKyto0WHFZDKx6icUCnF0PEFG1alUipsZdzGy9Tuh0WhYOUeFM6/XC5fLNRe5TpA3B8m/v7bY+rtCBZBerwdFUTjqmcZoyIuEis+kiCOZPjUhrq6uuKhWqVQ4InYxtY/+PuCD+phSSKh55XK55uKlHQ4HJxXR9yuKwkXT09NT5PN59Pt9oaxZAildSM0kSRK/n9QgbDabqNfraLfbbK5/E71eD7VajdMTb/JtBMCfK/r5zWYT3W5XmBCroBFpt9vNXiLr6+uIRqM8Bkjjwaenp/jrr7/wf//3fzg/Pxcj9fcQdbPWbrfD4/EgGAwiEonA7/dfCzIAPo7pl8tlpNNpHstXFAWj0YjXpFohp0ZtwUHodDro9Xr2s6KxUlJ06/V6hEIhVhDTz6XvW/Z3kV/c5eUljo+PkU6nOTxjFYiizQIUARgOh7G2tsbzwuS7QB8EihSvVCoshxJyvK+Dois9Hg9XXb1e79yiIFNpMoQ6OTnB4eEh+9j8Tp33nx0y76OHcCQSgdvthl6vR6/XQ7lcxtXVFTKZDLLZLGq1mvBduCUWzRCB6z421Ck4OjrCy5cv8fbtW6RSqRt9a76GyWSCVqvF6WHUtVhUCajVP1qtFlarlR/ov1sEPKUCqQ/n9F4Mh0OUSiWcn5+zseyyZK7bgDZbNAoSjUYRDAbZ343u0e12e24NF4tFoeq4ZahoY7fb2TCRDvBq2bbag6VaraJQKKBara7sM/IrMhgMeBw0FApxgihB91M68MuyzEUxkvZTSmIwGGSPDUrVUzOdTrmYRolGFDVOvm9WqxV2ux2SJF3zUiB1SCaTwfv373F4eIhMJsPx1IJ5KAWPzFDViYr0rNPr9ew/s1hkW4Su93g8htFohCRJsFgsS/2lJpMJOp0OarUayuUymxj/TqO/n4OUNuTZRU0+u93O76f6sJxKpZDJZL5rVEawWij8gsYIKfGQRnrVKc4A2OydDIEpBYwUO7QvoUI63ROpqUj/JaUkpRKTVQA1DEnt7fP5eK+lNrn+HGTrcHZ2hvfv3yOVSq108kYUbVTodDr2WohEImyEu3jDVsdOk8mceDB+GzqdjiPXyNtkETIhJaVNKpVCPp8Xps8/EVqtFjabDV6vl+fyw+Ewb4IVRUGlUkG5XEalUkGz2RQHvltE/TBcBkm8z87O8Pr1a7x584aToW5jjVHHn65zsVhEsVhEtVrl9KFlXg9kRNfv93+rTe1iJ1i9uQE+FNkajQabO9PoxSqg0Y9wOMzrdtFrbDKZoN1uo9FosJ+GWL+3zzKFwGJaFAA252y1WpxsSWpg8cz8POo9Bz23vF4vgsEg/7m6EE5qG7PZzMUys9k850VDyaZqfxz6WXTIAMCHfrq+6gKP2v+Evhf4cP9uNBq4urrC6ekpTk5OkMvloCiK2JsuQZ2sGI/H2RuIvIjMZjM8Hg9CoRD7uTWbzc/+XBrpcblccyEaakhBQCNVlUoFrVZLKBJVLKZ7ka8TrZnpdIpms4larYZ6vS7ev58A9aipetx02fOIRgip6EKG76PRiM8SNJFByW90TqcCOKWNqg3H7XY7nE4nF2zMZjO/BqvVCr/fz2b+y17/MqjhSWPhV1dXaDQaK1O0iqKNCrPZDL/fz+780WgUTqfz2geM5LKdTgf9fv+3i6K9LcivgaJKly0UOuzV63Xkcjmk02lORBAb0PsPySJJUUWGXrFYDMFgEFarFYPBgI1mK5UKGo3Gb3VAXzV031o2W0/djFwuh9PTU7x58wavXr3C0dHRrfuR0Bw/GRrThktRFFitVj7kqA8zVBC/q0jd+wKpEKkjRc0DtfKwUqmgUCigXq+v9PmjjlwllY3T6ZxrZvR6PbRaLTQaDZb7C24fOvRLkgSn0wm73T43Rrxo4pjP53F2dobz83OUSiX0+/0f+fJ/GqhoU6lU2D/I7Xazx4zT6eSvVW/m6UBCcnqLxQKPx3PNN2WZEbH67Y6PoQAAIABJREFU55EUX733nE6nS6NwaXy8XC4jk8ng9PQU5+fnKBaLYo90A3R/JSUHmXjT+y1JEgKBAGKxGEqlEqtibrqvaTQa9iAiddRN6hx6rvX7ffR6PT5DiOv0EY1Gw0obWZZht9thNBp5HQ0GAz5/0f7AYDCIfeM9hgoxw+EQ/X6fPZ0Gg8HcWlHvV/V6Pex2O/x+P3q9Hnw+Hxdw6PlHDX9KGaWiOcVu031YkiQeM6UmmF6v58Yg8KEGQD6qiyxbn6R4zmQyOD8/RzqdRqFQWKlHlSja/AetVgtZlhGPx7G3t4eDgwNsbW0hFAqxUeZ4PEalUuHxnGw2i0ajgV6vh/F4LGaHvwC1vJvcw2OxGGRZXlq0IdlvPp/H5eUlLi8vUSwWhQzyJ4EevmQoFwqFEIlEEAwG4XA4oNVqMRqN+CBPh3hRBP121N4zNFK07IFDPkKFQgFHR0f466+/8Pr1axwdHXEk8G2/rtFoxEVvRVF44zUajdhQU41er4csy1hbW0MikeAxnF/duJHuk2RA6nA4uGBFiQeFQgGVSmXlY7mkIiDpMBlJ0/2aikhUsCFfB8FqMBgMPB7lcrl4w6pmMpmg2Wzi6uoKx8fHrLwQHmFfznA45NhW6urq9XoMh0MEg0FWvVCxmQ4HFouFvQ9uakTRfZnUOmrVDnmedLvduXEbq9V67TBBhxNSMOZyOWQyGfazEdyM+oA3Ho/nOvOSJLGyyu/3s6caQdedRuEcDgeSySTW1tbg8/k+meKm1WrnCvKLSgHBx2eO3++fm3rQ6XRzB3oaJSQl3GAwmDuLiX3k/YDWWr/f51hsdYNHPYpEI9e0/wkEAhiNRnA4HBiNRrBYLFy0IRUW+Yyp1/RoNOJxqsUGmFqdSt8zGo24YH7TWpxOp1xoHQwGKJfL3OikZ+yqTbDFXeI/kBJgbW0Nm5ub2NraQiKRgM1mg0ajwXA45MPNixcv8ObNG1xeXs6NcYjN0OehWMz19XU8fPgQjx494ih1WqzAx4VEHeVSqYRqtYpmsymq6T8Ri4dP6lKqN6Dj8Rj9fh/9fh/D4fCXPozfJbShv2l8czQaIZfLXUteIC+hVaEeKx2Px7zxXbx/ajQaWCwWRCIR7O/vs1FcJpNBoVD4pT8nNINNpqR0CJhMJigUCri8vLwxMWoVaiR6PRR/TB5vwIfPUbfbRa/X402zYDWQWoPMiGnDqh7DoGcnRcJnMhn+vIhmx5dD9ySKnT06OuLkUK/Xy34KpBS22+1s1C1J0tKRtfF4zEXr4XA4Z6RJh45Op8NF2X6/D1mWsb6+jkQiwT9XbSJPRZ5OpwNFUThuVnAzdPiq1+soFosolUpwu91cnKNRCofDsVQFbjKZIMsyzGYzjEYjAoEA9vf3EY/HIcvy3PjbIiaTicdNG40GisUi8vk8pyMKwH52ZFhLSbL03DEajWzSH41G2TCa7nukZBLcH0ajEdrtNgwGAyqVCp/ner0eptPp3PkPAI8oajQa2Gw2rK2tYTKZcAGG1qnJZOLxekqDU49HUSHGaDTy1wIfFZJqD0UaxyLU51H6N5CIoFAoIJ1OcyhONpu9E4Xxb1+0oYemOlqOYsioYAMAzWaTXcr//PNPnJ6eolwuo91ui2LNV2AwGBAIBLC3t4fnz5/j4OAAoVAIVqv12ow3OYdns1nkcjlUq1X0ej3xfv9ELBpnulwu3gRpNBpMJhP0er05mbDgdlA/lNT/JUajEfL5PP7++2/87//+L1Kp1J3ERqsP/9ShplGARcNkSiza2NhAu91Gu91Gq9Xi8chfGerUm0wmPpS3223kcjkUCgX2G1qWGHSbUOylwWCYu14AuHvW6XTQ6XS4oC5Up6tB7fVAXfrFog3woTDabrdRqVR4g9loNMQYxjcwmUxQr9c5TjuVSnGhxul0cgqi2+1GPB7HbDbD2toaK7SBD2uSIsCz2SzK5TL6/T6vK/JdmM1maDQaODs7w9nZGfr9PhKJBCaTCbxe71xHmkbHyUuq0Wig0+n88vfF20BdHEun0zzWJMsyeyuSbxR15+12O1qtFrRaLbxeL8LhMNxuN1wuFyKRCHZ3dxGLxdgsV614VT/XyCPMaDRyEm0ul2MvDOEF9rFo43a7OTHNZDLx806v18PpdCIcDnPyFqkqyuUyJ6kpiiLCLO4JpIBRFyoLhQLK5TIcDgdsNttcM4jSZmm9kOpRq9XyOBwVu2l90RgpqcvVCVLqwsxNja1l+xb6OeQbls1m8f79exwfH+Po6IhjyO8qjOi3Ltqo58P9fj8bpEajUciyzBd6NBqhVCrh5OQEr169wsuXL5HP5zEcDsUh8yuhiune3h4ePXqE7e3tpbLfXq/H8bE0jiaM9X4+aHacNrfqmG8A3O0ql8uo1+vodDq/tILiLqDiB8lI7Xb7XLoMQYcQ8rxYdZeADpxkBkcPaovFwuqNZf8WKlxQV3PZ1/2KqA1K1YVsRVHQ7XbvbHNvMBggSRJkWZ5LsyEFKm2QKUVRHDpWB3X4A4EAx67T6IZ6w0ldTSra/A5FzlVB43/kcZPJZNj7gHxMnE4nPB4PKpUK2u02ms0mN6Om0ylarRaKxSIuLy9xdXWFUqmEXq/HxRr1KFW9Xud4W2pqJBKJa8oBdbrV2dkZ0uk0isWiSAj7AmjMtlAocHJMJBLB2toa3G43Pz9lWUY4HEYymUS324Xb7YZOp+OvDwQC8Hq97PcVCARgMpnYJ0NRFPbsIHUAFeHtdjsikQgSiQSy2Szy+Tz7gtFox++K+v0nHxP6fUKv18Pj8bBvE5l+U6JvsVhEuVxGq9XikWpSdNDPUh/2lz1vbzr4q8evbho/FyxnOByy/5bb7YbVauWkPQpdUN8Taf8HXPdto1+Lam21d9iy5NRl3ORjQ/dvSmE8OjrC33//jXfv3uHk5ASFQoELSnfBb120AcAqAHWsnNPpnIv4Hg6H7P2QzWZRKBSE0eI3QL5BgUAA4XCYfU0WzfWoGkvz+O/evcPx8THy+bx4339C9Ho9j3k4HA42zyR/jlqthlKpxBteUQj9PnQ6HUuLQ6EQS4uXmV+ORiP0er07OdDpdLo5c0HqUi4WldQPZkpJyuVy7GfVbrd/+UMJXZvBYMCjR/T+UJdJq9XeyYZRq9WyGWA4HGbPBjKEbDabqFarc+OrYhN7+2i1WjidTgQCAW4wURT14vgGfX7I+FsU0r4fOqDROBKNIimKAkmSUCqV0Gg0UKlUcH5+Dq/XC6vVyslq9JyjBsVgMOBOMXWPgQ9JiqlUCtlsFgaDAfF4nA+cakilcX5+LvZIXwkpn2q1GiwWC6sz1KoYMmCPxWIYDodwOp1oNBqszPf5fBwTTMVsGl9rNpv8zGq1WpAkidesx+NhbxZJkjh2PBaLoV6vYzabodls/tZFG/L9of0iMB8JTfsDo9EIWZYxnU5hMBjgdrvRarXQarVQKBSQy+V4/I3WHD0zaWSGnqPj8RiDwQCDwYDHyhf3olRAMBgMfDb8EoX47xKg8CWQcXoul4PRaESv10MqleKCjc/n472hukmkVuHQ6D9dJ/IIA3Bt5JQKP9Ts+9S1WDyLql/rxcUF0uk03r17h7dv3yKVSrHZ+13yWxdt1J1fWZYhyzLPTQLzaVH1/9/eeT61kW1df0ko5xwRSIDBjGc8z9S989z//9tTddPMGGOBck6t1Mr5/eB3b7eEcAQbofOronAALHeru8/Ze+212m10u13RSfwKqOpptVo5fYE2attkbcPhEJIkoVgsIpVKIZFIIJ/Po9PpiG7hDkKx7kajESaTCXq9nh+Ug8GAkxmazaZQ2jwAJB0OBoOc0nVf/KhGo2ETt8cultG9lgxtlaa29xm/jcdjVCoVvHv3Dn/99Rdub2/RbDaffWFvuVyujT50u10eK3M4HHA6nbBYLDxm+JgLQupg+nw+BAKBNZNN5WskXwGRWPOw0DOSkogCgQDC4TBCoRA8Hg93IYH1RCHaiIjxgMeBVDD0HKMI4kKhAKvVCqPRuLa5I9+Z4XCI8XiMxWKx1rmnDcN0OmVllF6v503iZtQ3KUWSySTevXuHZDIJSZKE599nQEVNagp0Oh02fiZoPCMcDsNkMuH4+Bjj8Xgt2Y+KChRJDQDD4RD1eh3v3r3D1dUVJEmC2+3GaDSCxWJZS6QlxU0gEMDR0REkScJwOOT3yD5DSouP+QNR0IXL5YJOp4PX6+XiS6PR4PCSXC7HSiYq3BgMBj5vm75QpKxTGhuTWoqubbrulUoPwedBahu619F5IPVZJBJBJBLB8fEx/H4/bDYbjwFTo1Fpq0C+jXSelCP4ZOJuMpl4BFWJsgio/DPg/fpTkiRks1keiYrH48hmsw+ervq57H3RxmAwwOl0IhAIwO/386wp8H7h3Ov1+MKv1+uQZVlsKr8QvV7PD6ZYLIZwOAyn07m22AQ+GNLSzGOhUEAmk0Emk0Gj0RDHfQehlAVarNADT6VSrcm7C4UCqtUqZFl+9hvyx4Y6TkdHRzg9PUUkEoHD4bhTtCGvEr1e/+jJFcrY6Gg0img0yp4Am94PSvkrJSUlEgm8e/cOpVJpL3w5SMWiTFWjxCZ6XpFakRb6yu/9HDmw8muUhR+l9Fuv1/MoDikj6WuWyyWrOXq93ncf29oXaISGCp5+v59TbfR6/Z0ONDU+hsOhMIZ+RKgYQ6kjKpUKjUaDZfmbRRbl6MWnlILz+ZyVyaT+pnUpjUmWSiWkUin2VSgWi99Vpv8coKZss9lErVZDrVZDKBSCyWQC8H7tSs0FaioCHxqRSn8v2vQ3Gg3E43H8+9//xr///W80m00Eg0HodDo21SX7hYODA9hsNoTDYS760ed998uk4st0OuU1I6E8LjqdDhqNBhaLhT1PaPyNnpEejweFQgHtdhvD4RDL5ZLNpqloMxgMeDxNWbih61vpzagceyRT3cFgwKoPpfJj8/UK3p9bSpqsVqt8bg0GA0KhEGKxGM7Ozvj4UhgDFW2Gw+FaAZysSqigajKZuKjqdrvhcrn4et1UnG97XymN/DOZDN6+fYurqyskEglkMhk0m80fVqjb66INzUE6HA5emNIoAfDe9LFQKPB8cbFYFEWbr8BgMMDn8+Hk5ATn5+eIRqN3OoQA2D+I4mMlSWIpsTjmuwkZ+tHiU7lJpwWOshPS6/XEJuMboXsaxWSHQiEe+byPxzaONRqN8Hq9iMViuLi4wIsXLxAKhdZS47YVG6ib3e1290ppp+zO9/t9jEYjzOdz9imKRCK4uLhAt9vFcrnkiN/ZbIbpdMobgvs6SABYPqwct6KFDZmE22w2XF5e4vj4GB6Ph5U9yp9HcbkfSwITfD3K4qrRaORuL20sCer40siaLMuiiPbIPNZ7XaVSwW63s8+Kcr00Ho+Ry+UQj8cRj8eRTqdRrVb35t740FC3n/wTrVYrjo6O2ASVfNWUbJ7z8XiMarWKSqWCbDaLv/76C//6179wfX3N6sNIJIJqtcohJ1RsoPEeUk6VSiUO5tjX+yile1HDgpoFwN21ChXQlL9frVZsXkyG0l6vdy2tiHyplEobaj70+30uelPRRqvVcvPRaDTyxr7ZbEKSJI6vJuUp3X+f+yj3l7Bp0E1qUEKpnhkOh+h2u/D5fGuG+5QMRgUbKuyRGTX5vnm9XoRCIRZnmEymtcbUtmuLnp+tVgv5fB75fB6pVApv377lwrgkST/0nO510Qb44P+g9FjQ6/VYLBaQZRnFYhHJZJLVHvsuWfxSqPLp8XhwfHyMWCyGYDAIi8Vyp+KpjICmi5Bi2wS7iVqt5lhUl8sFm80GjUbDixRJklCr1VCtVkVx7oE4ODiAxWLhMSQye/tRBr4qlQomkwlerxfRaBRnZ2dcBKDu8X3fR7PJlC61T5CShbp31O07ODhAOBxmmbder0cmk0G9Xker1cJgMOCNxn3dfvIMoMUMGWRqtVoYDAYuzlgsFpycnODw8HAt4Y/YlCPTvynSox6XbcUCZZoQdTG3eaEInj4WiwXhcBinp6eIRqPw+/0wGo2Yz+eo1WqsPEyn02g0GmIk6htYLpfodrvIZrOwWq3Q6XSYzWY4Pj6G2+3e+txRbvomkwkqlQoSiQQSiQRub285BrjZbAL4MEbabrfRbrfhcrn4Hksjr6QIIM+/fb6HUkGkWq2iUCjA4XDAbrd/tqksnR8anSI/MFLOkAcOmUIvFgv2kCOPP1LR0f2TPPlo7JEaSmRSS/YZjUYD2WwW2Wx26/13n4txn/P/nk6naDabrIKj64HWFnSuaH84n89ZfTOZTKDVahEIBBCNRqFSqeB0Ormg87HEKFKokrrm5uYGmUwG2WwW6XQa5XIZsiz/8OfpXhdtDg4O1lIxaHMDvE9faDabyOVyXLQRCQxfDpm20VhELBZDIBBYi1Mn5vM5GydS1Zokb4LdxGQyccGGZKXA+xtzt9uFJEm82RQFm4eBRtLI8Ndms91RtREPfW3RoorM34D3EvNQKIRoNIqTkxOcnJwgFAqxaeO2BykpOEgpQEWIfVrwkDx8MBiw2oZ8LijhhOKfXS4XstksyuUyut0uF2U2NxzU3aJiKkmI7XY7TCYTF3GocGMymeDz+RAOh9l8eJsiStyjHw8qXtI1RbGlm/dLWnTSqAdJ9n/0IlPwZeh0OgSDQbx48QKXl5c4OzvjVCIyxUylUri9vUU+n2e1neDroHGzfD6/dm+jAIVNRZvy+/r9Pmq1GpLJJP7880+8ffsWiUQCqVQKrVYLy+USBwcHbLVA5rg2m41T+QBwwiY1j51OJ4xGI/r9/nc7Dk+JxWKBdrvNijKj0Yjj4+OtpuufgvxSnE7n2sZd6Sel9NRUfmwmEikbSFQ8GI/HXCTv9/solUqwWCyYz+c8bqVkX9YvXwtdj7PZDK1Wi0eaNpO+lOeHFDKz2QwajQaTyYT9qD61r1D615BH2NXVFa6urpDNZlGpVFCr1Z6MampvizZUgSP5KfkrKB38K5UKMpkMkskk8vn8XqSWPBR0g3O5XIhEIjg5OcHp6SmOj4/h8/nWZgvpAmy32yiXy+xjQ5VNsZnfLejmSmNxwWAQfr+fzeIAsMqGDIhHo9EPftXPB9qwm81mWCwWmEwmXmQ8NqRcpIIRzY1Ho1G8fv0aL1++ZI8d5WKJVEBkDklx5Ol0mg0E98HLRslsNuPkrHw+D6vViuVyCbfbzakjBoNhzeukWCyi1+uxwvFjShuSh1Nqg7JoQzHs5EdlNpvXDIgJ8gJot9totVqQZVkYET8wSrWisgi7WZCbTqdot9solUrIZrMoFovodDpi3HSHUKlUcLlciEajuLy8xKtXr3B2dsaKj/F4jGaziVKphGKxiGq1isFgIM7xNzIYDDCdTjEcDrFardYUnoeHh7xuUUazd7tdlEol9rz473//i3g8jlwuh16vtzYGMhgMWI2jNJA/PDzk5ERqbh4fH6NSqfC9n8Ze9+meOp/P0Wq1kEwmWfnUaDQQiUQQDAY5MIYKKJvHhgpv9DX3Na2+FXqmUorUcDiE3+8HAB5tJvWO4PMgk/CvHeulc6LVarkxZTQatxpaU3FuPB6jVCohHo/j+voaf/31F66vr3kP+pRGjPeyaEPjA+FwGEdHRzg8PITP5+OqN1XFSQWgjAMUfBraNCqPcSQSQSAQ2GpATIajkiQhn8/j9vYWNzc3yOVyaLfbYkGyY2g0GhiNRrhcLi6Iejwejp2ezWaQZRntdhuyLGM8Hotr64GhLtI2X5OH+vnA9q4RdTiOj485EvX4+JhNkW02271eK5PJBO12G81mE/l8Hm/evEEymdzL0dTpdIpWq4VcLseyfRqT0uv1LKs3GAwcBd1oNDAcDlmFs+04UzeZ5OEk+aafSR/kd0Nmm9si4+l80SaSTJHF9fxw0HghzemTYnHzfMxmM3S7XVQqFTZ273a74vm5A9B1ajQa4ff7cXR0hJOTE0SjUW5yAetRt9RZ3rdi9mOwXC7Zy6JYLPL9drVaQZZlvs8ajUYYDAbM53M0Gg32wSHPi1KpdMdAmJQDlUqFPf4MBgMXzf1+P6+Z3W43IpEIGo0GK6jo1/t0jheLBbrdLorFIh+/YrGISCSCs7MzRCIR+Hw+OBwOANuVnt9D/akcw6IGilqt5kQyWt9Wq9W9LL59b8gL7PDwkPedFDBEacVK6H1Wq9V4rDEej7OH7VNUMe5d0Yaip4PBIEv1Kc1IGdlH5lIUY/rUTtxThqIS/X4/j0SFQqE7BRsagaAZRor4jsfjSCQSKJVKHI0p2B00Gg1sNhsCgQB3Rujcr1YrjMfjtRE4iuoTPBxk8EYz2du6UY+BTqfj5KpXr14hGo1y0pHX693qraNUgAyHQ1SrVaTTaY5MJT+xffNtmM/naLfb0Gg0XEShc0kJYaSGCQQCsNvtiEQibJz4KQ8guuboa6nIt/nxsQLdZDLhe3exWESr1RJGxA8MJaN4vV74/f61ArgSMiCu1WoolUqo1WrC2H1H0Gg0vGmnyNtwOAy/38+bDWWEO4C1a5RGBQTfxmKxQKfTQT6fB/ChiRAMBtmTT6/XYzKZoFqtcgQwmZTe19yl++RisWD1os1mg8PhYGNxSlg8PDzk9REZs+5b03ixWLCCjM5BOp1GMBhErVbD69evsVqtYDQaOX6b1pHKkafvDaWBBYNBxGIx9Ho9jEYjqNVq1Ot1dLtdsZ95JGhNdHp6itevX+Pnn3/G2dkZwuEwK7s39xmTyQT1eh2JRILVNTRm/lSvub0r2phMJoRCIZyfn+OXX37BTz/9hGg0yid1NBrxiE4+n0e9XsdgMPjRL3unIKnn0dERLi8vOX3E6XSuSdRINkreQdfX17i6usLNzQ0KhcJajK1gd6Cijc/n48hFh8PBnSulS/9oNGL1gOBhUM5nU/Tkfcf3axc2277PaDTi8PAQJycnuLi4YGl/MBhcm0VXLrAIMt3t9/uoVCqIx+P4448/cH19jUajwQaC+wTNxFN3jhI1xuMxRqMRH1e73c4qGaW65j7TPVrQUree0hdoc09ycuoeKg2NN99H5E1Vq9XQ6XSe5CJn16HNPKXBBYNBNnQnlH42pVIJhUIBlUoF/X5fbBJ2AJ1OB6fTyd5f0WgUh4eHrCQg3wZ6bg6HQxHU8AiQT02pVGJ/RUmScHh4CL/fz9Hr4/GYvWzIsLTdbt97LuiZ12w22fCYvP6sVisrcBwOBz8Le70eOp0OGo0GarXadz4SPxZ6PtHIWqPRgFarRS6XQ7fbXTOhtdvtbExLPmw03qtsVm2qjz/X1Ji+l17Xx/4e+JCWS+lG5Ec3HA7R6/XE/fgRMBgMXCh79eoVfvvtN7x8+RLRaBROp/PeBtZgMECpVMK7d+/wxx9/4ObmBvV6/Uk3O/aqaKNWq+FwOHB0dISXL1/i559/xsXFBUKhEAwGA2azGSRJQjabRSKRQDabFebDX4FarYbNZuPjTMfYarXeiYuVZRm5XA5v3rzBH3/8gXg8jlKpJGZAdxi1Wg2dTscdJLPZzHF9SnWV0p1fdAl/DMoCz9dCHcKjoyOcn58jFotx4lAwGGQ/BmWs96Z8nD7T6Fy1WkUul0OxWNy7sShiuVzy4pSOGW0kms0mAoEAvF4vvF4vbDbb2kgTqV02ryuliSKlDLXbbfR6PYzHY5Z62+12eDweHscxGo1blTeUoCGKA4+DSqWC0WjksYnj42M28VYq1mhUTZZl3uSJItpuQKOKVqsVPp8PgUAAPp8PTqcTOp1u7donBXir1WIlhrjuHpb5fM6Fgclkwsfd7XbDYrFAo9Hw6Gq5XEahUPjsa225XKLT6aBWq6FYLLKayuFwwGQyQafTwePxsJLH7XbDaDTuTVNrW3FksViw0ex4POZnGBXOzGYzjwmSn57dbmc14mKxYK89i8UCq9XK5sSkMFWuST52rD91HqgwROmdgUAAfr8fpVIJ5XJ5b87j90Sj0cDj8SAWi+Hy8hI///wzXr58iaOjIy7YbFNe0T2V0r6SySRyuRyvg54qe1O0ocWPx+PhuUiSThkMBgBgaX4mk0E6nUapVHqyEqmnDN20AoEAjo+PEYlEeNZTCXU18vk8rq+v8fbtW+Tz+TUTN8Fuohy1UBpOi9GJ7899x1vpvP8t9zi73Y6Liwv88ssvePHiBXw+H7xeL3cQ7xvP2nyQkvyfEpMosnjfIYUNKY46nQ6q1Sr7BXm9Xtjtdu4uarXatXQFgszhNRoNmxzXajVUq1W0Wi32YrDZbAiHw4jFYjg7O0MsFoPb7f5obLy4rh8HpZ+N3+9HMBiE3W6/YzBNBT4qoIl1y26h0WhgNptht9vhcDjYrBb4UBztdDprRRsR0vB4KIug5HFZqVTYAHw+n3Pc85eOvJAqrtVqodFooN1u80ZRrVazUtlms8FsNrNiZB/41DOEUqWSySRkWUYikYBWq2UVrtVqhcfjgdvtZu+82WzGxbBgMMij2nRM7zu2n1Ng+djr1el0XCgyGAxrykjBw6DVamG32xEKhRCLxfDixQv2PFJangDr602lcrnT6UCSJEiStBNigb14F+l0OhiNRvh8Pl6I0omlKja5lefzeSSTSaRSKZTL5TumYoJPo+wOBoPBOwUbZbedDNooVv0pGa59TVX8qbz2HwktPGjEQq/XrxkpzmYzHskgpY3g8bjvfUxdITKa3fY9m5+BDw884L3p8MnJCX777Tf8/vvviMVi3DEkY3eK7KbCjXI0irwalCqBRqOBTqeDwWAgrqf/D5nMkly/VCqxJwJ5LZCZMF1r2xRspMSZzWZoNpsol8uoVCq8cQDen9NoNMqRtUajEVqtFhqNZs3Mj+TllKiyT3Hs3wutVgubzQa3283qC2XnkD5o5FSWZfT7/b1Vp+0qpLTxeDzweDw8hgN88LZSjr2JxMXHhzZ10+kUnU6Hn2HKvyePoS+579G6V5IklMtlVKslPwGRAAAgAElEQVRV9syhhD5Ki6PxV6PRKM43Phy7yWSCWq3G65bFYsHNYlKIOhwOHrOi0W1qCOt0OhwcHKwVU5T3VPq3lL8mtq2JlL+n7yNzaYPBwP+eUNo8HHq9Hi6Xi+1OLi8vcXFxgVgsBq/Xy/fPTWgN2u12Ua1WUavV0Gg00O/3v/P/4OvYi6INGTWenZ3h9evXePXqFU5OTmC32wF8mJ+s1+vI5/PIZDLIZrOo1+vCmf8rUKlU0Ol0sFgs3BW8T542mUzQ6XRQr9chy/KTONa0OaGCg3KzuQk9xEm+SZ4TT+H/8aOg7rDL5YLX64XL5WKpKm3OW60WJEmCLMuYTCZ7fbweGuXstkajWSuYbH4dvdf1ej0/tEhKTF0i2rTTNUwjMQAQCoXw+vVr/P3vf8fr168RCoWgVquxXC6h1Wqh1Wp5LE65CNpc/NKs/19//bWmuBO8R3nvmc/n3Kk1GAzckVUWSO9TtSmLNu12m80RlV9H9y+r1Qq/34/Dw0P2Xtg2bqXX61mF81TnwHcNKohRnLvb7WYzd+XCn7wcKHGNRt32zf9p1yED00AggHA4zGmmy+USsiyjVCohlUohmUyiUCiIVM3vAD3rHlrNRCpHCkWhEVe3241QKMTrZ5fLxSb+fr8fw+FQrJUA9rLZVpimtWW9XofVauW0NbPZzPsLSralQsqm9w3dU2kcazQaYTKZsGKYnnekbKWxZCU08qjT6dhv7j6VquDLUVqdnJ+f49dff8Uvv/yCk5MT+P3+tbHSTcbjMbrdLvL5POLxONLpNOr1+s40OvaiaKPVauH3+3F+fo5Xr17h9PSUfRaIfr/PCx9JktDpdMTC5zug9Dh5Kg8jnU7HYwdkoEsP723jBjRfK0kSarUaptPpXsuWSWnlcrk47YRSw5RFulqthna7jdFo9GTO/XNAqX5QSqu3dYa0Wi0MBgNMJhMn/yiNT4+Ojtj4VNmJorElp9PJ8bTKr5vP51ws2lQGKDtV9GeNRgNXV1f4v//7P7x58wbValWMRn2CxWKB4XDIn2nxqCySbULng0zg7xtFpSL0cDjkzcK2e5pGo4HJZGJPBlmWH+X/um9QHLvD4eCEGaXUm6Bz3+l0eGRGbOx2CzpXykaHw+Hg4qosy6hUKshms8jlcjwmKc7xbkLJSIvFAhaLBcFgkP3fnE4nTCYTq0a8Xi+P9MiyzIpIoU7eDqkOAWA0GvHewmw2w2g0wul0sm+U3W6HyWS68/20qW+1WqjVarxOnUwmrO4IBoMIBAJrRtLb1lfK9Y/g4dBqtbz2fPnyJe/rlXuN+5hMJiiXy4jH47i+vmZz6125pp590WbTfPj8/HzNx4YWr7SJVHb/BV8PjcFsM3FW3sBo0U9GmtPp9LNucJuGZZ/rqfApx3iKjYtEIpzUYTAYOD55s2hDm+Jer4d8Ps/yzX1OHDs4OFiTqZIBtVJZRWMwYhHyuGyT9RKUWEF+GZTQ5HA4cHx8jMvLS/zyyy84Pz+Hx+PhbhSNNK1WK2i1WjacNplMa1LjbQkN26696XSKSqWCq6sr/Pvf/0YulxMKxy+AEmQmk8lnx3xTF3nbMVapVGwcTp3K+8YY6T1ksVhgsVgwGAyEsfg3Qgo4s9m8Nh6xrXNIm/p6vY56vY5Op/PZz1DB04HOt9PpZANi4P06ioo2uVwOhUIBzWZThGPsMMqRxkajgWKxiFwuB7/fD6fTiXA4DK1WC6PRCK/Xi+PjY1SrVbZqEOEon2Y2m2GxWPCzUaVSodvtcmNVkiS43W4eoQI+PBspuatWq7G6jdLEzGYzDg8PMRqNWKVDe8ltI+TK1yCeid8OFcHItP34+Bjn5+d48eIFQqEQK2w2oWO/WCzQarWQyWRwdXWFd+/eoVgs7lRS8bMt2pBXg9vtxsXFBX766SdcXl4iGo3CYrEAAJu7VatVJBIJJBIJ5PN5NJtNobJ5AO4rpNDGT6VSwWw2IxgM4vz8HPP5HP1+n0c66Ga7rdBCf0YGjMro2m2KGPJYoQ+KHlduRFarFYxGI0KhEE5OThCLxRAKhWA0GteKNkqlAG1uOp0Oj9tNp1Pk8/m97HiqVCpYLBY4nU6W9VMXglRVw+EQ3W6XfUvEtfaw0PgSHWPlWIVSoqvRaOB0OhGLxdDv9+F2uzGdTmGz2RCNRvHq1Sv8+uuvuLi44HsmcNdAeNuMN6k9lNz3MG2328jn80gkEigUCuL98AXQNfWQ0PuEfjYlc2wr2ih9bUh1KEyJvx2KrrXZbLBarZzepWS1ep9+UavVODyhUqlw4UywG2i1Wlb2ejwe2Gw2/rttRRuRCvY8WK1W6HQ6KBaLcDqdsNvtsFqt0Ol08Pl8MJlMCIfDrHaktS39WnA/m89E8iWq1WpwOByc0Ob3++98Lz2/qBHS6/XQbDbR6/U4mWo8Hn/Sy4g8j8j3SFyz3w4VMz0eD8LhMKLRKO/TqHi2CZ3P+XyORqOBeDyOv/76C2/evMHt7S3v93dlzfIsizZqtRp2ux1erxdnZ2f429/+hp9++gnhcJjNMQGwGVGhUMDNzQ1ub29RLBbZMV7w9SgX8vdB0eCnp6eYzWYIhUIc6fexCD762TSGQdG1nU6HE2eU548Mx8i4czMOULnJoNGQQCCAYDAIr9cLg8HAVXOSOpL0kYzM2u023zRojKDRaPBowb5wcHAAq9XKm43NG+nmuRQbvIdnsVig1+uhXq+jXC5zEW0z/Uej0cDr9eLi4oLHo2azGYxGI/x+P2Kx2L3Jb1/LZjeKok3r9Tra7fadgs22CFDB46P0xPnYNUpKHNpYCIXUw6BM+iIT6M1753K5RL/fR7VaRTqd5vAEkb64O5ASPBAIcAqc0j+M7pFkQN7tdoWXzTNCGYDicDjg8Xjgcrl43NTr9UKlUvF7oNlsolQqodPp/OiXvlOQsol83CRJQr/fXwtFILRaLUd201jadDqFLMuwWq1ro1Fms3mrnw01nsX65eFQKlCdTidfK2Taft+xpvVwo9FAIpHAf//7Xx6LkiRp5/Znz7Joc3BwAI/Hg8vLS/z222/47bffcHp6escUlwz8CoUCkskkGxLt2kl8iigLG0pIqUKfHQ4Hzs7O4HK5IMsye2F86meTd8NkMlmbPW02m+zzQP8GFRK8Xi/8fj/8fj/PjFMVnCC5v9lshsViYS8BuiEoZ1TJN4TkejQ/Ox6P2dSqXq8/Kb+ex4KODxUIqGCjfHBtbkRoM7IvcZbfC0oaKpfLyOfzPHOt1+vXfDFIiajRaOD3+7l7pIyfpSL3Q75/6WdNp1PUajUUi0W0Wi0uim6q3wTfF6W6cdOXaBPq/Ha7XZG0+AjcN1pI42002l0oFJDP5/l5I5pOTxsyNDWbzYhEIjg8PITH42E/EyVkukpFUcHzgYoJ9XoduVwOoVCI3w/0XvB4PDg9PUW1WkUmk4HFYrnznBR8GqX/V6fT4X2CElLPu1wuNvan3/d6Pb5eSd2h3B9s8+tTKm3Es/HboYIajZGazeZPGjzPZjNUq1Xc3Nzgjz/+wJs3b5DJZLhJuWs8y6INyQsvLy/x+++/45dffoHb7V67uCgtKpfL8WjUrhkSPWU+5mkDfCjekBdGOBz+7LlP5WaCnPgrlQrK5TJHtylvxhqNBjabDX6/H+FwGIFAgDeyy+Xyzvmmn6/8/LHXAbxX6FA0q9/vh9frRavVQrvd/txDttOQoS1JTl0u1x1lB42y0bwxHXvxMHtYZrMZWq0WcrkcHA4HX2N2u31N+XRwcACHwwGbzcbnQZnupDStvY9to1H3KTPoa+bzOftwZDIZ3NzcoFKpYDKZCC+OJ8SmL9F9RRuKm97FBdBThIrber0eRqMRJpOJFZ2byVGyLKPRaKBUKqFare61l9ouQSrjYDCIFy9e4OzsDKFQCBaLZe0cj0Yj9Pt9DAYDYT78TCFvG51Ox2vUUCgEm83GTUG/34+TkxMeg2w0GpyGJN4Tnwf5l7bbbUiShFarhV6vt9YoJp9KKqiSV5vX60W/34fRaOQ1LimQlcefxqro3yHvxm63u5d2CQ8JBZx4vV4ubLrdbuh0unttOFarFbrdLrLZLP7880/885//RDweR6vVwmg02sm9/rMs2lB8InmTBIPBtc3jeDxGo9FAMpnEu3fvOEax0+nsderPQ0EV5tFoxPP1dPw3N3k0QvW1mzWdTscLW5vNBp/Px5G1Sr8FMsb1eDxbjcPu+38omc/nmEwm7PGwWq04ym84HEKWZVYrfM7Pfy6oVCpOOvH7/QgGg3C73TyCBnzoDNMoW7vdRrfbxXA43Kl50l1gPp+j3W5Dp9PBbrfD5/MhGAzeubdtdijui0ikc7cNZXdp29/RZ4rOHAwGaDabKJfLqFarKBaLSCQSKBaL6PV6O/kQ3Rc+9t4Q1/DDstlRJK8LJZPJBP1+H51OB+12e6fMFPcdKtpEIpE1I00q2qxWK8xmM04z/dT5pbWO2MTvFrRWpjHHbDaLYDDIpsSBQIDVH+FwGKenp7xXKZVKopj3BZDqpdPpQJIkNBoNSJKEwWCwdm9VqkzNZjMCgQAMBgNGoxGvqShcY9vaZzKZoNFoIJvNIpFIIJlM8tiqWN98G3q9Hn6/H2dnZ3jx4gXC4fBHx/cnkwnq9Tp7Jt7e3qJQKOy0YvFZFm1UKhUbFlG3ny6u5XLJST/xeByJRAKlUgmyLIuCzQNBC47BYMDzoJ9bKPka1Go1TCYT3G43TCYTj1nQB3Utaf70c1+DchNLRmZknjsejzGbzXjUZzQaQZIkVCoVVKvVe+WXzxWtVgur1crmw3a7nc1vCZoLbrVakCSJR9nEguNhobGJZrPJXjE0rkd8yXX4sfOzzW9K+X0qlYqLdaVSCfl8Hul0GrlcDq1WC91uF7Vajf2fxHvhafEpTxvg04l8gi9n835qs9nW7qfKQuh0OhVeQjsGbQj9fj+Ojo54PIrWSVR4p3ujLMsfVbIpVZFCvbqbjEYjNJtNtmtwuVwwGo2w2+1QqVSw2Ww4PDzE6ekpWq0WlsslyuUyNykFn8d4PEav1+N1aKvVgsVi4dHxzREnvV7P4/4ajQYGg2HtmafcJyh9xlKpFK6vrxGPx4VX6gOwWq1wcHAAt9uNaDSKk5MTeL3erXs62oN2Op21ZOhOp7PTBRvgGRZtyITY4XDAbDavVVDJ1K1SqSCRSODt27dIJBKo1Wp3NjWCr4dSLSRJQrFYhNfrhc/n49Smx/j3Dg4OYDabYTKZAKyPOCnHqejrlZ83f03fD7y/CdP/pVKpoFarodvtcuFGrVZDq9ViOp1ypCAZq/Z6vb1w+VcqbXw+H3w+H5xOJz/cSDJKx6der6PRaAjDzEdisVjw/Yw6tSQFJl+v+9i8Nj53XFF5vShHIymBoVQq4d27d7i6usLbt2+Ry+W4qDkajXjzKRY1u8c27zLB10MSfZvNBo/Hwwa1VLQhddN4PMZkMuFFqCic7Q4k9Xe5XAgEAvD7/bDZbOyz1+v1+Fl5X9Gd/OF0Oh00Gs1akua+NIueE6QCKRQKsFqtXCg4OzuDzWZjG4GLiwtWdQ8GA2Hp8IUojWkLhQICgQB0Oh2cTufWlD5SOpHZLf29cm1E116/30exWOQpjuvraySTSS7YiPXu10Mpe+FwGMfHx/D7/Xf29/QMHI/HnMyWzWZRLBbRbDYxGo1+1Mt/MJ5N0Ybmvx0OBy4vL3FxcbGWFkUyxFKphJubG1xdXeH6+hrpdBrdbncvNtffC4pST6fTsNlsWK1WODo6gsfjgdPphE6nY6niJsrEKNoMkOEvmQ9vQsbEyoIQnW8yAFN2oCiKbzabrX3Q19DPU6lUGI1GaLVaaDQaqFQqqNfrPNYzGo34a8nkrNfrodvtotVqcZz1c79Rk9LJ4/Hg8PAQkUgEPp9vTbY4GAxQq9X4GLbb7Z2veD9VSBlBs/LFYhHpdJqTKKiwST5ESjNoZdfoY7He9xmkzudzXkiSpL/X6yGXy3HB5ubmBo1Gg681Iel/mnxJwU4UDB4OKoLb7XYe6bXZbGsJGVQUVXqEiWtod6DCnNVq5bQg6vQrDVPb7TYGgwFWqxWMRiPG4zFvMO12O4xGIxdsyEeD/BoEu8VyuUSn00E+n4darYbRaOTijdFohE6nQygU4uIARViXy2XhJ/YFLBYLyLKMYrHIhbH5fI6joyP4/X5WNm36+ymhfQTtM5QNyVQqhT/++ANXV1dIpVLodDri3vyVKCclIpEIXr9+zXt7eh5uHlu6jnK5HMd7397eolqtPouQoWdRtFGpVDCbzSwd/PXXX/Hrr78iEomw3FTpIB2Px5FKpVAqlXbWQfops1wu0W63kUwmeRMnSRKOjo54PpSKJkqUUnxlyhD51dhsNgAf7yjSBTwej7m4QsUb6j4tl0s2z5RlGbIso9/vs8x8sVjwSB09IClSnMaeJpMJF/rIjIy6XKPRCMPhcM3f5jlDRRvqGlJ8qdFoBPDBMLPZbKLZbPLInHiQPS6r1Qr9fp+VhUajEcPhkBf7LpcLHo8HVqsVwIeCjdIfQdnBu8+UezNqkUahstksGo0Gms0m8vk8UqnUWlKU8nsETwe6B1Nx+770CxpDpnvlfZ5Igi+DNvSU4EYpbrSpVz4nlQ0JwW6xmc5G0FpiNBrxGLZKpYLFYoFer4fX68Xx8TECgQB74NB9PpvNsnJRsHuMx2M0m01oNBp4PB7EYrE1LxSDwYBgMIhQKASv17s1clrwaYbDISqVCu8z6Bo0GAxr99ptTSpCuY8olUrIZDIcbPPu3Tvk83lRsPlGtFotfD4fjo6O8PPPP+N///d/WXm2DVKhyrKMfD6P6+trXF1dIZPJoN1uP4v92LO42g8ODuB0OnF6eoq//e1v+Pvf/47Ly0v4fD5oNBqMx2PUajXc3t7i6uoKNzc3KBaL6HQ6omDzCNAozGg0gizL6PV66HQ63H03Go33Fm2oeq3RaDhujwxuNRoNLBYLgLumqcrfDwYDVCoVVCoVVlHN5/M1Q+R+v8+eH7VaDa1Wi4sxtEiiGXHqalKhhjYx9CBVbnAXiwVvdDbjxJ8r9LCz2+1wuVxwuVwwm838oCO1Ur1eZ+O3xWIhNnnfgel0CkmSkEwmsVgs0G634Xa74XQ6EYlEoFar2cz7a8+FUpY6nU7RarWQz+fx9u1bZLNZVKtVlMtl9jASCqvdQLmpvE9NI67fh4fUmzqdjmNnN1Wk4rjvPsq1xWw24yaHEnq22mw2LBYLGAwGxGIxXF5eIhKJwGw2Yz6fo16vQ6/XQ5ZllMtl8WzdUWgcn9amyvE4akCbzWZ4PB64XC7YbDYYDAb0er0f/Mp3i+l0imazyWt9utdS0iatXyloZPNaIp++druNer3OhZrb21skk0kUi0X0+32xv/xGjEYjotEofv/9d/zjH//Azz//fGcsahNSmGezWcTjcdze3qLRaDybdedOF21oIWm1WnnW83/+53/w+vVr+Hw+VkBQ1e3m5gbX19dsPixudI8DmUDNZjMMh0MMBgMMh0P0+33U63Uu2igvImXXcLVaQavVQq/Xw2Qywel0IhQKodPpsHyR4rrJdJh+T4uWfD6PYrGIdrvNM97L5ZJj32mmVbmhJGXMtvSnj/ngbFsg7dOCSdkZttlsa2NR5KRPBrT5fJ4flvt0jH4UlEBCCRWNRgNOpxNerxedTgfj8Rjj8RihUIgXKlRQUyprqINBXX1ld5/UFuPxGMViEZlMBre3t3j79i2SySSq1Sp6vd5eFDCfA6SgoZh4u92+ZtQIfDDCbbVa6Pf7wgj3AfnUuBlJ8mk8ihoS4vjvFrTmUTaAALBPHo37h0IhaDQajEYjWK1WxGIxnJ+fc1Oy1+thMpncGXUV7CZKhWwmk0EoFILb7cbFxQVMJhM0Gg28Xi/C4TDC4TACgQA/x8V9+POg/cd4POZ9wcHBAdRqNcbjMRwOBxdxLBYLj+JQgmy322XvykqlsrbeIXNowbdB5tvRaBS//fYb/vGPf/C9cBPac47HY5RKJaRSKS6g1ev1Z1OwAXa8aHNwcACj0Qifz4fDw0McHR0hHA7D7XbzhoO8HZrNJkqlEgqFAqrVKrrd7rM6kU+BzTEJ+jXNFy4WCzSbTej1+rXiiPJrafFycHDA1W+bzQav1wuv18tJGuQjQ6NM9HtZllGv1/mGSqkLJO8nKT/NjFOK0bfcZMVD8v35MhgMsFgs3BFarVbo9XqoVCpIp9O4vb3lkRnxUPs+kCk4LTZ6vR5HCdPInyRJiEaj8Pv9MBqNHDdsMpnWNgBkGkzqOVKm6XQ66PV6DIdDFAoFpFIppNNplEolNu4W18juQCapXq+Xn6vBYJCL5TS+Qc/TZrP5LGbFnwqbvmub6xQqrE4mE1aGivGo3YO8+vR6/VpBVKPRwGq1wuv1YrVaweFwsGm7wWDgRDG1Wo1+v49Wq4Vqtcr3WtEQ2X0WiwVarRZSqdRaAu7FxQUX8yKRCGKxGIrFIqeXiubIl0HHOZPJcCNCkiR4vV44nU74fD643W5W+JPVQ7FYRKFQ4NjwfD6PTCZzb8FGKN++nIODA9jtdni9XgSDQXg8HvYa3TZlMRqNUK1WcXt7i3g8jkwm86wUNsROF220Wi0cDgcCgQCCwSBHPis7VdTJUHqY7FMU8/dEOSax+ec0siTLMi/8ty00leZfVIyhuG760Ov1rKIiM1NS2pCjfq/XQ7/fZ5UNdbWomDedTvlrhQn1t0HHdtPXgkZlyuUycrkcstksSqUSut2uuP6+I9SFGAwGbJpHaVIUK1utVnF8fMwbglAotJbERtcazW9XKhVIkoRut8vpCrPZjFPWKpUK+v2+OM87CBVtfD4fjo+PEY1G4fP5eLR0OByiVqshmUwinU6jXq+Los0DM5/PMRqN0O/32dBer9ev/b0y8lsUbXYPtVrNY3BKDw21Wg2LxYKDgwM4HA4esSCFFaWgkoKVfDQSiQQqlYrws3kmjEYjFItFHrnXarUwm804OTmBXq+H3+9HNBrlOOnxeIx+v/+jX/bOMZ/PWf0tyzJqtRpCoRCCwSAikQjC4TDsdjsAQJIkVhJns1kOW+h0Omg2m/fuJUTB5vOhfQQp98lj6FNhB4PBAMViETc3N0gmk6jVas9yXbKzRRu1Wg2r1YpQKISTkxPEYjHuFG+eXIpjGw6HGA6HbIIqqp8Pz33HczKZoNVqodPpbFXkbEOZTELSRaW/wrZ0GxrbUI5yKF+b8t9WJkoJvh5aRPZ6PTSbTVQqFZhMJsiyjHQ6jVQqhVQqhXw+v2ZCK/h+kDqCurDkMSVJEsrlMqrVKqrVKkKhEA4PD/nrSF1BY1bZbBapVArZbBblchmSJGG5XPKGcjAYQJbltdQTjUYjZrt3CCrCOZ1OBAIBuFyuO+OnmUyG/eGq1SpGo5G4jz4Q1DVst9uoVCool8uwWq3weDzQarWYTqfcmBgMBiLieUch9SOtS5WmxAcHB6x2VK536BkrSRISiQSHaqTTaeGj8cyYTqecVjoajWCxWBAIBDiF1e12IxqNolarcUgGjUILPh9qKg+HQ/aoqVQqiEQirEZ2uVxYrVaoVquIx+O4vr5GPp/HcDhcU0WK4vm3Q1YLPp+PJ2eUDYtNaG1br9eRTCbZAuU5qmyAHS7aUKU5Fovh5cuXOD8/Rzgchs1m2xrPNpvNWE4sOlPfB2VhRSRcPF9IgVEoFHB1dYVOpwOdTsd/ppQqis3Fj2GbeSlt+jqdDhdaSCXTaDRQKpXgcrmg1WpZNpzP55HNZnnMtNVqYT6fQ6fTQa1W832WZuzFQmY30Wg0MBqNLM2fz+eQJAnpdBrpdBrJZBI3NzccpSnGHR8Oim+uVqtIpVKwWq3QarWYz+ewWq2YTCa8SSM1qbjGdgvlOc7lcrDZbPD5fDCZTBzjTUUdaiyNRiPeUJJH483NDfL5PMrlMtrttiicPiNozTyfz5HL5ZBKpVAoFHB5eQmHwwGTyYRIJIJWq4Vms4lqtYpSqSSUVl8BrY9GoxEqlQp7cfZ6PUiSBLvdjtVqxYWBVCqFbrd778/73Ma04C4GgwF+vx+np6e4uLjA8fExnE7nvV42y+USjUYDmUwGiUQCt7e3yOVy6Pf7z/K5uJNFG7VazQ+5o6MjnJyc4OjoCB6PBwaDYU1ps5mAQX8mEAgeBmXE+2g0wu3tLQ4ODjg1ivyFxBja04M2D9SV6Ha7qNVqKBaLcDqdLNOfzWZrXd5ms4lut8tJYKSE20xQE8Xa3YW8U2hEJ5lMstkijWWUy2X0ej1xbT8gynFirVbLCVJqtRper5e920hlQ9eZYHeghM18Pg+HwwGdTofZbAa/38/Kml6vh1arhXa7DVmWWcXaaDTYo5FCFEjVKHiezGYz9Pt9yLIMWZZ5XIpCOsjzw2KxoNVqiffCN7BcLjk0ZTabod1uw2QycahNvV7HYDD46M8Qx//rIJUvFW3Oz88RiUS2ijEofU+WZRQKBeRyORQKBdTr9Wc9mr9TRRuSjZIZG80cRiIRBAIBWCyWewsySo8U6hwKHhdx49oPlsslOp0OptMpyuUyO+0vFgtMp1OMRiOMRiOxsXiiKM2KSSWl1+uh0+nY+I06fkq1IpmkbvoZKVPgRDzx7qH0QJIkCQDQaDTw5s0bvHnzBtlsFrVajQt3IrHkYaHrkVIvyNdNrVZjMBhApVKh1WpxcpdQ2uwei8UCnU4H2WyWG4oUrEAplqRszOVyXKAhrzDluD+lBgmeN9PplD3oQqEQPB4PdDodp0G6XC7Y7XbodLpn6eXxPaFmBdk6kA+nMnFK8DgYDAZ4vV6cnJzg7OwM4XB4696erodyuYzb21uk02lUKpVn75m5U0UbqsI5HA74/X6Ew2EcHh4iGAzCarXeiWimTcRmpKJAIHg4yHWfIoC3RaULni7k+aVUS3wqcljwfCGlR7lcRjweh8lkQiqczmIAAAaPSURBVKVSwdu3bxGPx1EulyHLMnvDCR4WmtGfTqeYTCbs6TadTlGr1aDRaCDLMisYe72eSAzaMaibv1gseISUusYulwuz2QyNRgPZbBaZTAb5fB6lUgmdTmdtQyKK4vsBNcYymQy8Xi8nO1KhhtJVnU4nrFYr73ue8+b1MaFQEzH2+/3R6XRwu92cXOnxeO6obABgPB5zWtTV1RXi8ThKpRJ6vd4PeNXfj50q2qjVao6783g88Hg8cDgcMJvNd8xpN0ekAIjOr0DwgNw3tyuur91HnMP9hUY3UqkUJpMJtFotJEnijn+73b53MyDM/R+WyWTCiSUUs67RaDAej9l4tNvtivG0HYMKc5RsServRqMBq9XKqsdarYZKpYJ6vY52uy2aj3sKRVPf3t5CrVZzkhSZVVPRxuVywWazcTqqKNoIdg2NRgOTyQSHw8FBGNuYzWZotVqcnpfL5TgF7Dmzc0UbvV4Pq9UKh8MBq9UKvV5/p0CjLMxQF5mk/Mr4Z4FA8PWIa0ggeH5QulgymUS9XodarcZoNGIPo49tHMU94eGZTCao1+sYjUYwGAxQq9U8qkijp6Jos3vQdUQGw+PxGKVSCTqdjtWrg8GAP8S1tb+Qn0o6ncZ4PGbfD0qT0ul0MJlMMJvNMJvNwmdMsLMofWi3KWyIyWTC41HFYhH1eh3D4fDZ3yd3qmijUqk4DsxqtcJisdwp2lBBhswwm80mCoUCarUay4ipcCMQCAQCgeADq9UK/X4fo9EI1WqV/4xMpcWz8/sym8044W3bWkeck92FmoqdTgfdbnctMEN5bsU5FtDI5Hg8htFoZF+bo6MjSJLE43bk3ykCVwS7CPl69ft9DIdDGAyGtb9frVaYTCaccErpebIs78U9cueKNhqNBgaDARaLBTabDTabDSaTae3rptMpms0mGo0G0uk0rq6ucHNzg1qthuFwKNQ2AoFAIBAo2BwjFuamTwNlceZTiPG03YOajALB5zCZTJDP5/Hnn3/CYDAgn89zup8kSRiNRiJRTrCzzGYzdLtd1Ot1HhfVarVrHrX1eh2ZTAbZbBaVSgWdTmdvnns7VbQBPkinlMUbOqEEpdhcX1/jzz//xNu3b1GpVNBqtTjFZl9OsEAgEAgEn4LM+wW7i1jXCATPHyrSzOdzOBwOTKdTSJKEWq2GTqeD0WgkCoGCnWQymfCETLFYhMfjgdvt5r8fDocoFArIZDIol8ucYLkv7FzRhmKEx+MxRx7OZjPodDoA76t05Cj9r3/9C//85z+RTCZ5Fl/EkwoEAoFAcBfxbBQIBIKnzXQ6RaFQgCRJ0Gg0awmQlEYmlDaCXYO8vOr1OlKpFDweD5xOJwwGA0wmE7/vb25ucHt7i1KphH6/v1frlp0q2lAMW7fbRblcRjKZhEqlQqvVgt1uBwB0Oh0kEgn85z//wR9//IF4PI5ut/uDX7lAIBAIBAKBQCAQfD2LxYINqgWC58R4PEaj0YBOp4Ner4darUa/34fH44Esy4jH4/jPf/6Dm5sblMtl9Hq9vSpQ7lTRhm5U9XodBwcHGI/HKBaLcDqdMBqNAN7LBiuVClKpFPL5PPr9/g9+1QKBQCAQCAQCgUDwdQjPKsFzhzxtaFR7NBohn8/DZrNhOByiVCohnU6jUCig0+lgPB7v1TWxk0WbxWKBfr+PSqUCo9EIvV4Pjeb9f2U2m2E4HEKWZciyvFcVOIFAIBAIBAKBQPC82KfNqWA/mc/n7MlEqpvr62totVrM53MMBgP0ej30+32Mx+O9827aqaINRX1Np1PIsox6vQ6VSnXHPJHSFkRClEAgEAgEAoFAIBAIBE+X5XLJ+3yarKF9Pu3n93l/vxNFG2UU6bbPAoFAIBAIBAKBQCAQCHaHzdG/Ly3K7Mvo4JcWbSQAucd4IR9jH07EJzh+wJ/1Q86hAIA4j88BcQ6fB+I87j7iHD4PxHncfcQ5fB6I87j77OQ5/NZ9/jOsE2w9j6pn+B8VCAQCgUAgEAgEAoFAINh51D/6BQgEAoFAIBAIBAKBQCAQCO4iijYCgUAgEAgEAoFAIBAIBE8QUbQRCAQCgUAgEAgEAoFAIHiCiKKNQCAQCAQCgUAgEAgEAsETRBRtBAKBQCAQCAQCgUAgEAieIKJoIxAIBAKBQCAQCAQCgUDwBBFFG4FAIBAIBAKBQCAQCASCJ4go2ggEAoFAIBAIBAKBQCAQPEFE0UYgEAgEAoFAIBAIBAKB4Any/wDD7+oC1I0JNAAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 1440x288 with 10 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "80cglphET1U4",
        "outputId": "acb0edd0-b19b-4757-9d36-0822a8087d92"
      },
      "source": [
        "print(x_test.shape)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(250, 380, 380, 3)\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "KVUyTwE0I-Qj"
      },
      "source": [
        "#Load model and extract the feature maps: "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "iOGP92UtJCSP",
        "outputId": "9dcadb40-606e-491e-f330-7c7d7825c686"
      },
      "source": [
        "\n",
        "#loading the EfficientNet model: \n",
        "from tensorflow.keras.applications import EfficientNetB4\n",
        "base_model = EfficientNetB4(weights='imagenet',include_top=False)\n",
        "print(base_model.summary())"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Downloading data from https://storage.googleapis.com/keras-applications/efficientnetb4_notop.h5\n",
            "71688192/71686520 [==============================] - 1s 0us/step\n",
            "Model: \"efficientnetb4\"\n",
            "__________________________________________________________________________________________________\n",
            "Layer (type)                    Output Shape         Param #     Connected to                     \n",
            "==================================================================================================\n",
            "input_1 (InputLayer)            [(None, None, None,  0                                            \n",
            "__________________________________________________________________________________________________\n",
            "rescaling (Rescaling)           (None, None, None, 3 0           input_1[0][0]                    \n",
            "__________________________________________________________________________________________________\n",
            "normalization (Normalization)   (None, None, None, 3 7           rescaling[0][0]                  \n",
            "__________________________________________________________________________________________________\n",
            "stem_conv_pad (ZeroPadding2D)   (None, None, None, 3 0           normalization[0][0]              \n",
            "__________________________________________________________________________________________________\n",
            "stem_conv (Conv2D)              (None, None, None, 4 1296        stem_conv_pad[0][0]              \n",
            "__________________________________________________________________________________________________\n",
            "stem_bn (BatchNormalization)    (None, None, None, 4 192         stem_conv[0][0]                  \n",
            "__________________________________________________________________________________________________\n",
            "stem_activation (Activation)    (None, None, None, 4 0           stem_bn[0][0]                    \n",
            "__________________________________________________________________________________________________\n",
            "block1a_dwconv (DepthwiseConv2D (None, None, None, 4 432         stem_activation[0][0]            \n",
            "__________________________________________________________________________________________________\n",
            "block1a_bn (BatchNormalization) (None, None, None, 4 192         block1a_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block1a_activation (Activation) (None, None, None, 4 0           block1a_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block1a_se_squeeze (GlobalAvera (None, 48)           0           block1a_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block1a_se_reshape (Reshape)    (None, 1, 1, 48)     0           block1a_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block1a_se_reduce (Conv2D)      (None, 1, 1, 12)     588         block1a_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block1a_se_expand (Conv2D)      (None, 1, 1, 48)     624         block1a_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block1a_se_excite (Multiply)    (None, None, None, 4 0           block1a_activation[0][0]         \n",
            "                                                                 block1a_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block1a_project_conv (Conv2D)   (None, None, None, 2 1152        block1a_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block1a_project_bn (BatchNormal (None, None, None, 2 96          block1a_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block1b_dwconv (DepthwiseConv2D (None, None, None, 2 216         block1a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block1b_bn (BatchNormalization) (None, None, None, 2 96          block1b_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block1b_activation (Activation) (None, None, None, 2 0           block1b_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block1b_se_squeeze (GlobalAvera (None, 24)           0           block1b_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block1b_se_reshape (Reshape)    (None, 1, 1, 24)     0           block1b_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block1b_se_reduce (Conv2D)      (None, 1, 1, 6)      150         block1b_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block1b_se_expand (Conv2D)      (None, 1, 1, 24)     168         block1b_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block1b_se_excite (Multiply)    (None, None, None, 2 0           block1b_activation[0][0]         \n",
            "                                                                 block1b_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block1b_project_conv (Conv2D)   (None, None, None, 2 576         block1b_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block1b_project_bn (BatchNormal (None, None, None, 2 96          block1b_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block1b_drop (Dropout)          (None, None, None, 2 0           block1b_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block1b_add (Add)               (None, None, None, 2 0           block1b_drop[0][0]               \n",
            "                                                                 block1a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2a_expand_conv (Conv2D)    (None, None, None, 1 3456        block1b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block2a_expand_bn (BatchNormali (None, None, None, 1 576         block2a_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block2a_expand_activation (Acti (None, None, None, 1 0           block2a_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2a_dwconv_pad (ZeroPadding (None, None, None, 1 0           block2a_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block2a_dwconv (DepthwiseConv2D (None, None, None, 1 1296        block2a_dwconv_pad[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2a_bn (BatchNormalization) (None, None, None, 1 576         block2a_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block2a_activation (Activation) (None, None, None, 1 0           block2a_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block2a_se_squeeze (GlobalAvera (None, 144)          0           block2a_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2a_se_reshape (Reshape)    (None, 1, 1, 144)    0           block2a_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2a_se_reduce (Conv2D)      (None, 1, 1, 6)      870         block2a_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2a_se_expand (Conv2D)      (None, 1, 1, 144)    1008        block2a_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2a_se_excite (Multiply)    (None, None, None, 1 0           block2a_activation[0][0]         \n",
            "                                                                 block2a_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2a_project_conv (Conv2D)   (None, None, None, 3 4608        block2a_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2a_project_bn (BatchNormal (None, None, None, 3 128         block2a_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block2b_expand_conv (Conv2D)    (None, None, None, 1 6144        block2a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2b_expand_bn (BatchNormali (None, None, None, 1 768         block2b_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block2b_expand_activation (Acti (None, None, None, 1 0           block2b_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2b_dwconv (DepthwiseConv2D (None, None, None, 1 1728        block2b_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block2b_bn (BatchNormalization) (None, None, None, 1 768         block2b_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block2b_activation (Activation) (None, None, None, 1 0           block2b_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block2b_se_squeeze (GlobalAvera (None, 192)          0           block2b_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2b_se_reshape (Reshape)    (None, 1, 1, 192)    0           block2b_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2b_se_reduce (Conv2D)      (None, 1, 1, 8)      1544        block2b_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2b_se_expand (Conv2D)      (None, 1, 1, 192)    1728        block2b_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2b_se_excite (Multiply)    (None, None, None, 1 0           block2b_activation[0][0]         \n",
            "                                                                 block2b_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2b_project_conv (Conv2D)   (None, None, None, 3 6144        block2b_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2b_project_bn (BatchNormal (None, None, None, 3 128         block2b_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block2b_drop (Dropout)          (None, None, None, 3 0           block2b_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2b_add (Add)               (None, None, None, 3 0           block2b_drop[0][0]               \n",
            "                                                                 block2a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2c_expand_conv (Conv2D)    (None, None, None, 1 6144        block2b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block2c_expand_bn (BatchNormali (None, None, None, 1 768         block2c_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block2c_expand_activation (Acti (None, None, None, 1 0           block2c_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2c_dwconv (DepthwiseConv2D (None, None, None, 1 1728        block2c_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block2c_bn (BatchNormalization) (None, None, None, 1 768         block2c_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block2c_activation (Activation) (None, None, None, 1 0           block2c_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block2c_se_squeeze (GlobalAvera (None, 192)          0           block2c_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2c_se_reshape (Reshape)    (None, 1, 1, 192)    0           block2c_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2c_se_reduce (Conv2D)      (None, 1, 1, 8)      1544        block2c_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2c_se_expand (Conv2D)      (None, 1, 1, 192)    1728        block2c_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2c_se_excite (Multiply)    (None, None, None, 1 0           block2c_activation[0][0]         \n",
            "                                                                 block2c_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2c_project_conv (Conv2D)   (None, None, None, 3 6144        block2c_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2c_project_bn (BatchNormal (None, None, None, 3 128         block2c_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block2c_drop (Dropout)          (None, None, None, 3 0           block2c_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2c_add (Add)               (None, None, None, 3 0           block2c_drop[0][0]               \n",
            "                                                                 block2b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block2d_expand_conv (Conv2D)    (None, None, None, 1 6144        block2c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block2d_expand_bn (BatchNormali (None, None, None, 1 768         block2d_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block2d_expand_activation (Acti (None, None, None, 1 0           block2d_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2d_dwconv (DepthwiseConv2D (None, None, None, 1 1728        block2d_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block2d_bn (BatchNormalization) (None, None, None, 1 768         block2d_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block2d_activation (Activation) (None, None, None, 1 0           block2d_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block2d_se_squeeze (GlobalAvera (None, 192)          0           block2d_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2d_se_reshape (Reshape)    (None, 1, 1, 192)    0           block2d_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2d_se_reduce (Conv2D)      (None, 1, 1, 8)      1544        block2d_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2d_se_expand (Conv2D)      (None, 1, 1, 192)    1728        block2d_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2d_se_excite (Multiply)    (None, None, None, 1 0           block2d_activation[0][0]         \n",
            "                                                                 block2d_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2d_project_conv (Conv2D)   (None, None, None, 3 6144        block2d_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block2d_project_bn (BatchNormal (None, None, None, 3 128         block2d_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block2d_drop (Dropout)          (None, None, None, 3 0           block2d_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block2d_add (Add)               (None, None, None, 3 0           block2d_drop[0][0]               \n",
            "                                                                 block2c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block3a_expand_conv (Conv2D)    (None, None, None, 1 6144        block2d_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block3a_expand_bn (BatchNormali (None, None, None, 1 768         block3a_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block3a_expand_activation (Acti (None, None, None, 1 0           block3a_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3a_dwconv_pad (ZeroPadding (None, None, None, 1 0           block3a_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block3a_dwconv (DepthwiseConv2D (None, None, None, 1 4800        block3a_dwconv_pad[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3a_bn (BatchNormalization) (None, None, None, 1 768         block3a_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block3a_activation (Activation) (None, None, None, 1 0           block3a_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block3a_se_squeeze (GlobalAvera (None, 192)          0           block3a_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3a_se_reshape (Reshape)    (None, 1, 1, 192)    0           block3a_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3a_se_reduce (Conv2D)      (None, 1, 1, 8)      1544        block3a_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3a_se_expand (Conv2D)      (None, 1, 1, 192)    1728        block3a_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3a_se_excite (Multiply)    (None, None, None, 1 0           block3a_activation[0][0]         \n",
            "                                                                 block3a_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3a_project_conv (Conv2D)   (None, None, None, 5 10752       block3a_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3a_project_bn (BatchNormal (None, None, None, 5 224         block3a_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block3b_expand_conv (Conv2D)    (None, None, None, 3 18816       block3a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3b_expand_bn (BatchNormali (None, None, None, 3 1344        block3b_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block3b_expand_activation (Acti (None, None, None, 3 0           block3b_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3b_dwconv (DepthwiseConv2D (None, None, None, 3 8400        block3b_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block3b_bn (BatchNormalization) (None, None, None, 3 1344        block3b_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block3b_activation (Activation) (None, None, None, 3 0           block3b_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block3b_se_squeeze (GlobalAvera (None, 336)          0           block3b_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3b_se_reshape (Reshape)    (None, 1, 1, 336)    0           block3b_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3b_se_reduce (Conv2D)      (None, 1, 1, 14)     4718        block3b_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3b_se_expand (Conv2D)      (None, 1, 1, 336)    5040        block3b_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3b_se_excite (Multiply)    (None, None, None, 3 0           block3b_activation[0][0]         \n",
            "                                                                 block3b_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3b_project_conv (Conv2D)   (None, None, None, 5 18816       block3b_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3b_project_bn (BatchNormal (None, None, None, 5 224         block3b_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block3b_drop (Dropout)          (None, None, None, 5 0           block3b_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3b_add (Add)               (None, None, None, 5 0           block3b_drop[0][0]               \n",
            "                                                                 block3a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3c_expand_conv (Conv2D)    (None, None, None, 3 18816       block3b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block3c_expand_bn (BatchNormali (None, None, None, 3 1344        block3c_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block3c_expand_activation (Acti (None, None, None, 3 0           block3c_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3c_dwconv (DepthwiseConv2D (None, None, None, 3 8400        block3c_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block3c_bn (BatchNormalization) (None, None, None, 3 1344        block3c_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block3c_activation (Activation) (None, None, None, 3 0           block3c_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block3c_se_squeeze (GlobalAvera (None, 336)          0           block3c_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3c_se_reshape (Reshape)    (None, 1, 1, 336)    0           block3c_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3c_se_reduce (Conv2D)      (None, 1, 1, 14)     4718        block3c_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3c_se_expand (Conv2D)      (None, 1, 1, 336)    5040        block3c_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3c_se_excite (Multiply)    (None, None, None, 3 0           block3c_activation[0][0]         \n",
            "                                                                 block3c_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3c_project_conv (Conv2D)   (None, None, None, 5 18816       block3c_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3c_project_bn (BatchNormal (None, None, None, 5 224         block3c_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block3c_drop (Dropout)          (None, None, None, 5 0           block3c_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3c_add (Add)               (None, None, None, 5 0           block3c_drop[0][0]               \n",
            "                                                                 block3b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block3d_expand_conv (Conv2D)    (None, None, None, 3 18816       block3c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block3d_expand_bn (BatchNormali (None, None, None, 3 1344        block3d_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block3d_expand_activation (Acti (None, None, None, 3 0           block3d_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3d_dwconv (DepthwiseConv2D (None, None, None, 3 8400        block3d_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block3d_bn (BatchNormalization) (None, None, None, 3 1344        block3d_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block3d_activation (Activation) (None, None, None, 3 0           block3d_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block3d_se_squeeze (GlobalAvera (None, 336)          0           block3d_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3d_se_reshape (Reshape)    (None, 1, 1, 336)    0           block3d_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3d_se_reduce (Conv2D)      (None, 1, 1, 14)     4718        block3d_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3d_se_expand (Conv2D)      (None, 1, 1, 336)    5040        block3d_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3d_se_excite (Multiply)    (None, None, None, 3 0           block3d_activation[0][0]         \n",
            "                                                                 block3d_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3d_project_conv (Conv2D)   (None, None, None, 5 18816       block3d_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block3d_project_bn (BatchNormal (None, None, None, 5 224         block3d_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block3d_drop (Dropout)          (None, None, None, 5 0           block3d_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block3d_add (Add)               (None, None, None, 5 0           block3d_drop[0][0]               \n",
            "                                                                 block3c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block4a_expand_conv (Conv2D)    (None, None, None, 3 18816       block3d_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block4a_expand_bn (BatchNormali (None, None, None, 3 1344        block4a_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block4a_expand_activation (Acti (None, None, None, 3 0           block4a_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4a_dwconv_pad (ZeroPadding (None, None, None, 3 0           block4a_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block4a_dwconv (DepthwiseConv2D (None, None, None, 3 3024        block4a_dwconv_pad[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4a_bn (BatchNormalization) (None, None, None, 3 1344        block4a_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block4a_activation (Activation) (None, None, None, 3 0           block4a_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block4a_se_squeeze (GlobalAvera (None, 336)          0           block4a_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4a_se_reshape (Reshape)    (None, 1, 1, 336)    0           block4a_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4a_se_reduce (Conv2D)      (None, 1, 1, 14)     4718        block4a_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4a_se_expand (Conv2D)      (None, 1, 1, 336)    5040        block4a_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4a_se_excite (Multiply)    (None, None, None, 3 0           block4a_activation[0][0]         \n",
            "                                                                 block4a_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4a_project_conv (Conv2D)   (None, None, None, 1 37632       block4a_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4a_project_bn (BatchNormal (None, None, None, 1 448         block4a_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block4b_expand_conv (Conv2D)    (None, None, None, 6 75264       block4a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4b_expand_bn (BatchNormali (None, None, None, 6 2688        block4b_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block4b_expand_activation (Acti (None, None, None, 6 0           block4b_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4b_dwconv (DepthwiseConv2D (None, None, None, 6 6048        block4b_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block4b_bn (BatchNormalization) (None, None, None, 6 2688        block4b_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block4b_activation (Activation) (None, None, None, 6 0           block4b_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block4b_se_squeeze (GlobalAvera (None, 672)          0           block4b_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4b_se_reshape (Reshape)    (None, 1, 1, 672)    0           block4b_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4b_se_reduce (Conv2D)      (None, 1, 1, 28)     18844       block4b_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4b_se_expand (Conv2D)      (None, 1, 1, 672)    19488       block4b_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4b_se_excite (Multiply)    (None, None, None, 6 0           block4b_activation[0][0]         \n",
            "                                                                 block4b_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4b_project_conv (Conv2D)   (None, None, None, 1 75264       block4b_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4b_project_bn (BatchNormal (None, None, None, 1 448         block4b_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block4b_drop (Dropout)          (None, None, None, 1 0           block4b_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4b_add (Add)               (None, None, None, 1 0           block4b_drop[0][0]               \n",
            "                                                                 block4a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4c_expand_conv (Conv2D)    (None, None, None, 6 75264       block4b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block4c_expand_bn (BatchNormali (None, None, None, 6 2688        block4c_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block4c_expand_activation (Acti (None, None, None, 6 0           block4c_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4c_dwconv (DepthwiseConv2D (None, None, None, 6 6048        block4c_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block4c_bn (BatchNormalization) (None, None, None, 6 2688        block4c_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block4c_activation (Activation) (None, None, None, 6 0           block4c_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block4c_se_squeeze (GlobalAvera (None, 672)          0           block4c_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4c_se_reshape (Reshape)    (None, 1, 1, 672)    0           block4c_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4c_se_reduce (Conv2D)      (None, 1, 1, 28)     18844       block4c_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4c_se_expand (Conv2D)      (None, 1, 1, 672)    19488       block4c_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4c_se_excite (Multiply)    (None, None, None, 6 0           block4c_activation[0][0]         \n",
            "                                                                 block4c_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4c_project_conv (Conv2D)   (None, None, None, 1 75264       block4c_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4c_project_bn (BatchNormal (None, None, None, 1 448         block4c_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block4c_drop (Dropout)          (None, None, None, 1 0           block4c_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4c_add (Add)               (None, None, None, 1 0           block4c_drop[0][0]               \n",
            "                                                                 block4b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block4d_expand_conv (Conv2D)    (None, None, None, 6 75264       block4c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block4d_expand_bn (BatchNormali (None, None, None, 6 2688        block4d_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block4d_expand_activation (Acti (None, None, None, 6 0           block4d_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4d_dwconv (DepthwiseConv2D (None, None, None, 6 6048        block4d_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block4d_bn (BatchNormalization) (None, None, None, 6 2688        block4d_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block4d_activation (Activation) (None, None, None, 6 0           block4d_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block4d_se_squeeze (GlobalAvera (None, 672)          0           block4d_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4d_se_reshape (Reshape)    (None, 1, 1, 672)    0           block4d_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4d_se_reduce (Conv2D)      (None, 1, 1, 28)     18844       block4d_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4d_se_expand (Conv2D)      (None, 1, 1, 672)    19488       block4d_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4d_se_excite (Multiply)    (None, None, None, 6 0           block4d_activation[0][0]         \n",
            "                                                                 block4d_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4d_project_conv (Conv2D)   (None, None, None, 1 75264       block4d_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4d_project_bn (BatchNormal (None, None, None, 1 448         block4d_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block4d_drop (Dropout)          (None, None, None, 1 0           block4d_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4d_add (Add)               (None, None, None, 1 0           block4d_drop[0][0]               \n",
            "                                                                 block4c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block4e_expand_conv (Conv2D)    (None, None, None, 6 75264       block4d_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block4e_expand_bn (BatchNormali (None, None, None, 6 2688        block4e_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block4e_expand_activation (Acti (None, None, None, 6 0           block4e_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4e_dwconv (DepthwiseConv2D (None, None, None, 6 6048        block4e_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block4e_bn (BatchNormalization) (None, None, None, 6 2688        block4e_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block4e_activation (Activation) (None, None, None, 6 0           block4e_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block4e_se_squeeze (GlobalAvera (None, 672)          0           block4e_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4e_se_reshape (Reshape)    (None, 1, 1, 672)    0           block4e_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4e_se_reduce (Conv2D)      (None, 1, 1, 28)     18844       block4e_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4e_se_expand (Conv2D)      (None, 1, 1, 672)    19488       block4e_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4e_se_excite (Multiply)    (None, None, None, 6 0           block4e_activation[0][0]         \n",
            "                                                                 block4e_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4e_project_conv (Conv2D)   (None, None, None, 1 75264       block4e_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4e_project_bn (BatchNormal (None, None, None, 1 448         block4e_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block4e_drop (Dropout)          (None, None, None, 1 0           block4e_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4e_add (Add)               (None, None, None, 1 0           block4e_drop[0][0]               \n",
            "                                                                 block4d_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block4f_expand_conv (Conv2D)    (None, None, None, 6 75264       block4e_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block4f_expand_bn (BatchNormali (None, None, None, 6 2688        block4f_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block4f_expand_activation (Acti (None, None, None, 6 0           block4f_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4f_dwconv (DepthwiseConv2D (None, None, None, 6 6048        block4f_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block4f_bn (BatchNormalization) (None, None, None, 6 2688        block4f_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block4f_activation (Activation) (None, None, None, 6 0           block4f_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block4f_se_squeeze (GlobalAvera (None, 672)          0           block4f_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4f_se_reshape (Reshape)    (None, 1, 1, 672)    0           block4f_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4f_se_reduce (Conv2D)      (None, 1, 1, 28)     18844       block4f_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4f_se_expand (Conv2D)      (None, 1, 1, 672)    19488       block4f_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4f_se_excite (Multiply)    (None, None, None, 6 0           block4f_activation[0][0]         \n",
            "                                                                 block4f_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4f_project_conv (Conv2D)   (None, None, None, 1 75264       block4f_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block4f_project_bn (BatchNormal (None, None, None, 1 448         block4f_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block4f_drop (Dropout)          (None, None, None, 1 0           block4f_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block4f_add (Add)               (None, None, None, 1 0           block4f_drop[0][0]               \n",
            "                                                                 block4e_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block5a_expand_conv (Conv2D)    (None, None, None, 6 75264       block4f_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block5a_expand_bn (BatchNormali (None, None, None, 6 2688        block5a_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block5a_expand_activation (Acti (None, None, None, 6 0           block5a_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5a_dwconv (DepthwiseConv2D (None, None, None, 6 16800       block5a_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block5a_bn (BatchNormalization) (None, None, None, 6 2688        block5a_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block5a_activation (Activation) (None, None, None, 6 0           block5a_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block5a_se_squeeze (GlobalAvera (None, 672)          0           block5a_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5a_se_reshape (Reshape)    (None, 1, 1, 672)    0           block5a_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5a_se_reduce (Conv2D)      (None, 1, 1, 28)     18844       block5a_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5a_se_expand (Conv2D)      (None, 1, 1, 672)    19488       block5a_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5a_se_excite (Multiply)    (None, None, None, 6 0           block5a_activation[0][0]         \n",
            "                                                                 block5a_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5a_project_conv (Conv2D)   (None, None, None, 1 107520      block5a_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5a_project_bn (BatchNormal (None, None, None, 1 640         block5a_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block5b_expand_conv (Conv2D)    (None, None, None, 9 153600      block5a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5b_expand_bn (BatchNormali (None, None, None, 9 3840        block5b_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block5b_expand_activation (Acti (None, None, None, 9 0           block5b_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5b_dwconv (DepthwiseConv2D (None, None, None, 9 24000       block5b_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block5b_bn (BatchNormalization) (None, None, None, 9 3840        block5b_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block5b_activation (Activation) (None, None, None, 9 0           block5b_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block5b_se_squeeze (GlobalAvera (None, 960)          0           block5b_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5b_se_reshape (Reshape)    (None, 1, 1, 960)    0           block5b_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5b_se_reduce (Conv2D)      (None, 1, 1, 40)     38440       block5b_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5b_se_expand (Conv2D)      (None, 1, 1, 960)    39360       block5b_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5b_se_excite (Multiply)    (None, None, None, 9 0           block5b_activation[0][0]         \n",
            "                                                                 block5b_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5b_project_conv (Conv2D)   (None, None, None, 1 153600      block5b_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5b_project_bn (BatchNormal (None, None, None, 1 640         block5b_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block5b_drop (Dropout)          (None, None, None, 1 0           block5b_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5b_add (Add)               (None, None, None, 1 0           block5b_drop[0][0]               \n",
            "                                                                 block5a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5c_expand_conv (Conv2D)    (None, None, None, 9 153600      block5b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block5c_expand_bn (BatchNormali (None, None, None, 9 3840        block5c_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block5c_expand_activation (Acti (None, None, None, 9 0           block5c_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5c_dwconv (DepthwiseConv2D (None, None, None, 9 24000       block5c_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block5c_bn (BatchNormalization) (None, None, None, 9 3840        block5c_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block5c_activation (Activation) (None, None, None, 9 0           block5c_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block5c_se_squeeze (GlobalAvera (None, 960)          0           block5c_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5c_se_reshape (Reshape)    (None, 1, 1, 960)    0           block5c_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5c_se_reduce (Conv2D)      (None, 1, 1, 40)     38440       block5c_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5c_se_expand (Conv2D)      (None, 1, 1, 960)    39360       block5c_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5c_se_excite (Multiply)    (None, None, None, 9 0           block5c_activation[0][0]         \n",
            "                                                                 block5c_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5c_project_conv (Conv2D)   (None, None, None, 1 153600      block5c_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5c_project_bn (BatchNormal (None, None, None, 1 640         block5c_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block5c_drop (Dropout)          (None, None, None, 1 0           block5c_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5c_add (Add)               (None, None, None, 1 0           block5c_drop[0][0]               \n",
            "                                                                 block5b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block5d_expand_conv (Conv2D)    (None, None, None, 9 153600      block5c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block5d_expand_bn (BatchNormali (None, None, None, 9 3840        block5d_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block5d_expand_activation (Acti (None, None, None, 9 0           block5d_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5d_dwconv (DepthwiseConv2D (None, None, None, 9 24000       block5d_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block5d_bn (BatchNormalization) (None, None, None, 9 3840        block5d_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block5d_activation (Activation) (None, None, None, 9 0           block5d_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block5d_se_squeeze (GlobalAvera (None, 960)          0           block5d_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5d_se_reshape (Reshape)    (None, 1, 1, 960)    0           block5d_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5d_se_reduce (Conv2D)      (None, 1, 1, 40)     38440       block5d_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5d_se_expand (Conv2D)      (None, 1, 1, 960)    39360       block5d_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5d_se_excite (Multiply)    (None, None, None, 9 0           block5d_activation[0][0]         \n",
            "                                                                 block5d_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5d_project_conv (Conv2D)   (None, None, None, 1 153600      block5d_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5d_project_bn (BatchNormal (None, None, None, 1 640         block5d_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block5d_drop (Dropout)          (None, None, None, 1 0           block5d_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5d_add (Add)               (None, None, None, 1 0           block5d_drop[0][0]               \n",
            "                                                                 block5c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block5e_expand_conv (Conv2D)    (None, None, None, 9 153600      block5d_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block5e_expand_bn (BatchNormali (None, None, None, 9 3840        block5e_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block5e_expand_activation (Acti (None, None, None, 9 0           block5e_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5e_dwconv (DepthwiseConv2D (None, None, None, 9 24000       block5e_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block5e_bn (BatchNormalization) (None, None, None, 9 3840        block5e_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block5e_activation (Activation) (None, None, None, 9 0           block5e_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block5e_se_squeeze (GlobalAvera (None, 960)          0           block5e_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5e_se_reshape (Reshape)    (None, 1, 1, 960)    0           block5e_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5e_se_reduce (Conv2D)      (None, 1, 1, 40)     38440       block5e_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5e_se_expand (Conv2D)      (None, 1, 1, 960)    39360       block5e_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5e_se_excite (Multiply)    (None, None, None, 9 0           block5e_activation[0][0]         \n",
            "                                                                 block5e_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5e_project_conv (Conv2D)   (None, None, None, 1 153600      block5e_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5e_project_bn (BatchNormal (None, None, None, 1 640         block5e_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block5e_drop (Dropout)          (None, None, None, 1 0           block5e_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5e_add (Add)               (None, None, None, 1 0           block5e_drop[0][0]               \n",
            "                                                                 block5d_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block5f_expand_conv (Conv2D)    (None, None, None, 9 153600      block5e_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block5f_expand_bn (BatchNormali (None, None, None, 9 3840        block5f_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block5f_expand_activation (Acti (None, None, None, 9 0           block5f_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5f_dwconv (DepthwiseConv2D (None, None, None, 9 24000       block5f_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block5f_bn (BatchNormalization) (None, None, None, 9 3840        block5f_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block5f_activation (Activation) (None, None, None, 9 0           block5f_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block5f_se_squeeze (GlobalAvera (None, 960)          0           block5f_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5f_se_reshape (Reshape)    (None, 1, 1, 960)    0           block5f_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5f_se_reduce (Conv2D)      (None, 1, 1, 40)     38440       block5f_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5f_se_expand (Conv2D)      (None, 1, 1, 960)    39360       block5f_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5f_se_excite (Multiply)    (None, None, None, 9 0           block5f_activation[0][0]         \n",
            "                                                                 block5f_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5f_project_conv (Conv2D)   (None, None, None, 1 153600      block5f_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block5f_project_bn (BatchNormal (None, None, None, 1 640         block5f_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block5f_drop (Dropout)          (None, None, None, 1 0           block5f_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block5f_add (Add)               (None, None, None, 1 0           block5f_drop[0][0]               \n",
            "                                                                 block5e_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6a_expand_conv (Conv2D)    (None, None, None, 9 153600      block5f_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6a_expand_bn (BatchNormali (None, None, None, 9 3840        block6a_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block6a_expand_activation (Acti (None, None, None, 9 0           block6a_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6a_dwconv_pad (ZeroPadding (None, None, None, 9 0           block6a_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block6a_dwconv (DepthwiseConv2D (None, None, None, 9 24000       block6a_dwconv_pad[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6a_bn (BatchNormalization) (None, None, None, 9 3840        block6a_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block6a_activation (Activation) (None, None, None, 9 0           block6a_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block6a_se_squeeze (GlobalAvera (None, 960)          0           block6a_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6a_se_reshape (Reshape)    (None, 1, 1, 960)    0           block6a_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6a_se_reduce (Conv2D)      (None, 1, 1, 40)     38440       block6a_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6a_se_expand (Conv2D)      (None, 1, 1, 960)    39360       block6a_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6a_se_excite (Multiply)    (None, None, None, 9 0           block6a_activation[0][0]         \n",
            "                                                                 block6a_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6a_project_conv (Conv2D)   (None, None, None, 2 261120      block6a_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6a_project_bn (BatchNormal (None, None, None, 2 1088        block6a_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block6b_expand_conv (Conv2D)    (None, None, None, 1 443904      block6a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6b_expand_bn (BatchNormali (None, None, None, 1 6528        block6b_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block6b_expand_activation (Acti (None, None, None, 1 0           block6b_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6b_dwconv (DepthwiseConv2D (None, None, None, 1 40800       block6b_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block6b_bn (BatchNormalization) (None, None, None, 1 6528        block6b_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block6b_activation (Activation) (None, None, None, 1 0           block6b_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block6b_se_squeeze (GlobalAvera (None, 1632)         0           block6b_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6b_se_reshape (Reshape)    (None, 1, 1, 1632)   0           block6b_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6b_se_reduce (Conv2D)      (None, 1, 1, 68)     111044      block6b_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6b_se_expand (Conv2D)      (None, 1, 1, 1632)   112608      block6b_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6b_se_excite (Multiply)    (None, None, None, 1 0           block6b_activation[0][0]         \n",
            "                                                                 block6b_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6b_project_conv (Conv2D)   (None, None, None, 2 443904      block6b_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6b_project_bn (BatchNormal (None, None, None, 2 1088        block6b_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block6b_drop (Dropout)          (None, None, None, 2 0           block6b_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6b_add (Add)               (None, None, None, 2 0           block6b_drop[0][0]               \n",
            "                                                                 block6a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6c_expand_conv (Conv2D)    (None, None, None, 1 443904      block6b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6c_expand_bn (BatchNormali (None, None, None, 1 6528        block6c_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block6c_expand_activation (Acti (None, None, None, 1 0           block6c_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6c_dwconv (DepthwiseConv2D (None, None, None, 1 40800       block6c_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block6c_bn (BatchNormalization) (None, None, None, 1 6528        block6c_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block6c_activation (Activation) (None, None, None, 1 0           block6c_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block6c_se_squeeze (GlobalAvera (None, 1632)         0           block6c_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6c_se_reshape (Reshape)    (None, 1, 1, 1632)   0           block6c_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6c_se_reduce (Conv2D)      (None, 1, 1, 68)     111044      block6c_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6c_se_expand (Conv2D)      (None, 1, 1, 1632)   112608      block6c_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6c_se_excite (Multiply)    (None, None, None, 1 0           block6c_activation[0][0]         \n",
            "                                                                 block6c_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6c_project_conv (Conv2D)   (None, None, None, 2 443904      block6c_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6c_project_bn (BatchNormal (None, None, None, 2 1088        block6c_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block6c_drop (Dropout)          (None, None, None, 2 0           block6c_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6c_add (Add)               (None, None, None, 2 0           block6c_drop[0][0]               \n",
            "                                                                 block6b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6d_expand_conv (Conv2D)    (None, None, None, 1 443904      block6c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6d_expand_bn (BatchNormali (None, None, None, 1 6528        block6d_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block6d_expand_activation (Acti (None, None, None, 1 0           block6d_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6d_dwconv (DepthwiseConv2D (None, None, None, 1 40800       block6d_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block6d_bn (BatchNormalization) (None, None, None, 1 6528        block6d_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block6d_activation (Activation) (None, None, None, 1 0           block6d_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block6d_se_squeeze (GlobalAvera (None, 1632)         0           block6d_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6d_se_reshape (Reshape)    (None, 1, 1, 1632)   0           block6d_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6d_se_reduce (Conv2D)      (None, 1, 1, 68)     111044      block6d_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6d_se_expand (Conv2D)      (None, 1, 1, 1632)   112608      block6d_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6d_se_excite (Multiply)    (None, None, None, 1 0           block6d_activation[0][0]         \n",
            "                                                                 block6d_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6d_project_conv (Conv2D)   (None, None, None, 2 443904      block6d_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6d_project_bn (BatchNormal (None, None, None, 2 1088        block6d_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block6d_drop (Dropout)          (None, None, None, 2 0           block6d_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6d_add (Add)               (None, None, None, 2 0           block6d_drop[0][0]               \n",
            "                                                                 block6c_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6e_expand_conv (Conv2D)    (None, None, None, 1 443904      block6d_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6e_expand_bn (BatchNormali (None, None, None, 1 6528        block6e_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block6e_expand_activation (Acti (None, None, None, 1 0           block6e_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6e_dwconv (DepthwiseConv2D (None, None, None, 1 40800       block6e_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block6e_bn (BatchNormalization) (None, None, None, 1 6528        block6e_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block6e_activation (Activation) (None, None, None, 1 0           block6e_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block6e_se_squeeze (GlobalAvera (None, 1632)         0           block6e_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6e_se_reshape (Reshape)    (None, 1, 1, 1632)   0           block6e_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6e_se_reduce (Conv2D)      (None, 1, 1, 68)     111044      block6e_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6e_se_expand (Conv2D)      (None, 1, 1, 1632)   112608      block6e_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6e_se_excite (Multiply)    (None, None, None, 1 0           block6e_activation[0][0]         \n",
            "                                                                 block6e_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6e_project_conv (Conv2D)   (None, None, None, 2 443904      block6e_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6e_project_bn (BatchNormal (None, None, None, 2 1088        block6e_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block6e_drop (Dropout)          (None, None, None, 2 0           block6e_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6e_add (Add)               (None, None, None, 2 0           block6e_drop[0][0]               \n",
            "                                                                 block6d_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6f_expand_conv (Conv2D)    (None, None, None, 1 443904      block6e_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6f_expand_bn (BatchNormali (None, None, None, 1 6528        block6f_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block6f_expand_activation (Acti (None, None, None, 1 0           block6f_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6f_dwconv (DepthwiseConv2D (None, None, None, 1 40800       block6f_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block6f_bn (BatchNormalization) (None, None, None, 1 6528        block6f_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block6f_activation (Activation) (None, None, None, 1 0           block6f_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block6f_se_squeeze (GlobalAvera (None, 1632)         0           block6f_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6f_se_reshape (Reshape)    (None, 1, 1, 1632)   0           block6f_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6f_se_reduce (Conv2D)      (None, 1, 1, 68)     111044      block6f_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6f_se_expand (Conv2D)      (None, 1, 1, 1632)   112608      block6f_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6f_se_excite (Multiply)    (None, None, None, 1 0           block6f_activation[0][0]         \n",
            "                                                                 block6f_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6f_project_conv (Conv2D)   (None, None, None, 2 443904      block6f_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6f_project_bn (BatchNormal (None, None, None, 2 1088        block6f_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block6f_drop (Dropout)          (None, None, None, 2 0           block6f_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6f_add (Add)               (None, None, None, 2 0           block6f_drop[0][0]               \n",
            "                                                                 block6e_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6g_expand_conv (Conv2D)    (None, None, None, 1 443904      block6f_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6g_expand_bn (BatchNormali (None, None, None, 1 6528        block6g_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block6g_expand_activation (Acti (None, None, None, 1 0           block6g_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6g_dwconv (DepthwiseConv2D (None, None, None, 1 40800       block6g_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block6g_bn (BatchNormalization) (None, None, None, 1 6528        block6g_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block6g_activation (Activation) (None, None, None, 1 0           block6g_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block6g_se_squeeze (GlobalAvera (None, 1632)         0           block6g_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6g_se_reshape (Reshape)    (None, 1, 1, 1632)   0           block6g_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6g_se_reduce (Conv2D)      (None, 1, 1, 68)     111044      block6g_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6g_se_expand (Conv2D)      (None, 1, 1, 1632)   112608      block6g_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6g_se_excite (Multiply)    (None, None, None, 1 0           block6g_activation[0][0]         \n",
            "                                                                 block6g_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6g_project_conv (Conv2D)   (None, None, None, 2 443904      block6g_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6g_project_bn (BatchNormal (None, None, None, 2 1088        block6g_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block6g_drop (Dropout)          (None, None, None, 2 0           block6g_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6g_add (Add)               (None, None, None, 2 0           block6g_drop[0][0]               \n",
            "                                                                 block6f_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6h_expand_conv (Conv2D)    (None, None, None, 1 443904      block6g_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block6h_expand_bn (BatchNormali (None, None, None, 1 6528        block6h_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block6h_expand_activation (Acti (None, None, None, 1 0           block6h_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6h_dwconv (DepthwiseConv2D (None, None, None, 1 40800       block6h_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block6h_bn (BatchNormalization) (None, None, None, 1 6528        block6h_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block6h_activation (Activation) (None, None, None, 1 0           block6h_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block6h_se_squeeze (GlobalAvera (None, 1632)         0           block6h_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6h_se_reshape (Reshape)    (None, 1, 1, 1632)   0           block6h_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6h_se_reduce (Conv2D)      (None, 1, 1, 68)     111044      block6h_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6h_se_expand (Conv2D)      (None, 1, 1, 1632)   112608      block6h_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6h_se_excite (Multiply)    (None, None, None, 1 0           block6h_activation[0][0]         \n",
            "                                                                 block6h_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6h_project_conv (Conv2D)   (None, None, None, 2 443904      block6h_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block6h_project_bn (BatchNormal (None, None, None, 2 1088        block6h_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block6h_drop (Dropout)          (None, None, None, 2 0           block6h_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block6h_add (Add)               (None, None, None, 2 0           block6h_drop[0][0]               \n",
            "                                                                 block6g_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block7a_expand_conv (Conv2D)    (None, None, None, 1 443904      block6h_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "block7a_expand_bn (BatchNormali (None, None, None, 1 6528        block7a_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block7a_expand_activation (Acti (None, None, None, 1 0           block7a_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block7a_dwconv (DepthwiseConv2D (None, None, None, 1 14688       block7a_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block7a_bn (BatchNormalization) (None, None, None, 1 6528        block7a_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block7a_activation (Activation) (None, None, None, 1 0           block7a_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block7a_se_squeeze (GlobalAvera (None, 1632)         0           block7a_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block7a_se_reshape (Reshape)    (None, 1, 1, 1632)   0           block7a_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block7a_se_reduce (Conv2D)      (None, 1, 1, 68)     111044      block7a_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block7a_se_expand (Conv2D)      (None, 1, 1, 1632)   112608      block7a_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block7a_se_excite (Multiply)    (None, None, None, 1 0           block7a_activation[0][0]         \n",
            "                                                                 block7a_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block7a_project_conv (Conv2D)   (None, None, None, 4 731136      block7a_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block7a_project_bn (BatchNormal (None, None, None, 4 1792        block7a_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block7b_expand_conv (Conv2D)    (None, None, None, 2 1204224     block7a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block7b_expand_bn (BatchNormali (None, None, None, 2 10752       block7b_expand_conv[0][0]        \n",
            "__________________________________________________________________________________________________\n",
            "block7b_expand_activation (Acti (None, None, None, 2 0           block7b_expand_bn[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block7b_dwconv (DepthwiseConv2D (None, None, None, 2 24192       block7b_expand_activation[0][0]  \n",
            "__________________________________________________________________________________________________\n",
            "block7b_bn (BatchNormalization) (None, None, None, 2 10752       block7b_dwconv[0][0]             \n",
            "__________________________________________________________________________________________________\n",
            "block7b_activation (Activation) (None, None, None, 2 0           block7b_bn[0][0]                 \n",
            "__________________________________________________________________________________________________\n",
            "block7b_se_squeeze (GlobalAvera (None, 2688)         0           block7b_activation[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block7b_se_reshape (Reshape)    (None, 1, 1, 2688)   0           block7b_se_squeeze[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block7b_se_reduce (Conv2D)      (None, 1, 1, 112)    301168      block7b_se_reshape[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block7b_se_expand (Conv2D)      (None, 1, 1, 2688)   303744      block7b_se_reduce[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block7b_se_excite (Multiply)    (None, None, None, 2 0           block7b_activation[0][0]         \n",
            "                                                                 block7b_se_expand[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block7b_project_conv (Conv2D)   (None, None, None, 4 1204224     block7b_se_excite[0][0]          \n",
            "__________________________________________________________________________________________________\n",
            "block7b_project_bn (BatchNormal (None, None, None, 4 1792        block7b_project_conv[0][0]       \n",
            "__________________________________________________________________________________________________\n",
            "block7b_drop (Dropout)          (None, None, None, 4 0           block7b_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "block7b_add (Add)               (None, None, None, 4 0           block7b_drop[0][0]               \n",
            "                                                                 block7a_project_bn[0][0]         \n",
            "__________________________________________________________________________________________________\n",
            "top_conv (Conv2D)               (None, None, None, 1 802816      block7b_add[0][0]                \n",
            "__________________________________________________________________________________________________\n",
            "top_bn (BatchNormalization)     (None, None, None, 1 7168        top_conv[0][0]                   \n",
            "__________________________________________________________________________________________________\n",
            "top_activation (Activation)     (None, None, None, 1 0           top_bn[0][0]                     \n",
            "==================================================================================================\n",
            "Total params: 17,673,823\n",
            "Trainable params: 17,548,616\n",
            "Non-trainable params: 125,207\n",
            "__________________________________________________________________________________________________\n",
            "None\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "8x5n-X-AJkkH",
        "outputId": "b7de8573-08da-4ee1-a9c1-62e65ab1c2e9"
      },
      "source": [
        "#extraire le premier niveau \n",
        "\n",
        "from tensorflow.keras import layers\n",
        "from tensorflow.keras.applications.vgg16 import VGG16\n",
        "from tensorflow.keras.preprocessing import image\n",
        "from tensorflow.keras.applications.vgg16 import preprocess_input\n",
        "from tensorflow.keras.preprocessing.image import load_img\n",
        "from tensorflow.keras import Model\n",
        "from tensorflow.keras.layers import GlobalAveragePooling2D\n",
        "from tensorflow.keras import Sequential\n",
        "import numpy as np\n",
        "import os\n",
        "\n",
        "prev_model=Model(inputs=base_model.input, outputs=base_model.get_layer('block1b_add').output) #loading the 1st block of the previously saved model \n",
        "\n",
        "block1_pool_features = Sequential()\n",
        "block1_pool_features.add(prev_model)\n",
        "block1_pool_features.add(GlobalAveragePooling2D())\n",
        "block1_pool_features.compile()\n",
        "\n",
        "block1_pool_features.summary()\n",
        "block1_pool_features=block1_pool_features.predict(x_test)\n",
        "print(block1_pool_features.shape)\n",
        "print(block1_pool_features)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model: \"sequential_2\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "model_2 (Functional)         (None, None, None, 24)    5881      \n",
            "_________________________________________________________________\n",
            "global_average_pooling2d_2 ( (None, 24)                0         \n",
            "=================================================================\n",
            "Total params: 5,881\n",
            "Trainable params: 5,538\n",
            "Non-trainable params: 343\n",
            "_________________________________________________________________\n",
            "(250, 24)\n",
            "[[ 1.4635324   0.00861125 -0.71892434 ...  5.2617054   2.2105136\n",
            "   4.762001  ]\n",
            " [ 1.4636385   0.0086343  -0.7182717  ...  5.262479    2.2094219\n",
            "   4.761701  ]\n",
            " [ 1.463434    0.0086158  -0.71897095 ...  5.2611165   2.211374\n",
            "   4.7621813 ]\n",
            " ...\n",
            " [ 1.4635812   0.00862133 -0.71865207 ...  5.261577    2.2100618\n",
            "   4.7616434 ]\n",
            " [ 1.4638174   0.00862188 -0.71803284 ...  5.2622433   2.2089307\n",
            "   4.761424  ]\n",
            " [ 1.4634827   0.00862108 -0.7189032  ...  5.261721    2.2105174\n",
            "   4.761898  ]]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "n9n9N8AoUiBU"
      },
      "source": [
        "On a obtenu un vecteur. Ce vecteur sera considéré comme une représentation de l'image d'entrée.\n",
        "\n",
        "Dans cet espace de  représentation on va utiliser la distance de mahalanobis pour évaluer le dégré d'anomalie de chaque image. \n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "o2zHm2FnU2lG"
      },
      "source": [
        "# calcul de la distance de mahalanobis dans chaque espace de representation: \n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "e5dDju_wZmWu"
      },
      "source": [
        "# Using Mahalanobis Distance as Anomaly Detector\n",
        "from sklearn.covariance import EmpiricalCovariance\n",
        "emp_cov = EmpiricalCovariance().fit(block1_pool_features) #calcul de la symetric covariance matrix of the distribution\n"
      ],
      "execution_count": 25,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 499
        },
        "id": "Z8wuChLqZsdW",
        "outputId": "46caf3cf-dd7d-42fe-805e-83480d68c3c7"
      },
      "source": [
        "plt.figure()\n",
        "plt.title('Full Covariance Matrix of the distribution of the features')\n",
        "plt.imshow(emp_cov.covariance_)\n",
        "plt.show()\n"
      ],
      "execution_count": 27,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 720x576 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_T-H_7axaSQb"
      },
      "source": [
        "distMahalanobis=emp_cov.mahalanobis(block1_pool_features)"
      ],
      "execution_count": 38,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "UpIiH4sNfrjG"
      },
      "source": [
        "def plot_AUC(fpr,tpf,AUC):\n",
        "    lw = 2\n",
        "    plt.plot(fpr, tpr, 'o',color='darkorange', label='ROC curve (area = %0.4f)' % AUC)\n",
        "    plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n",
        "    plt.xlim([0.0, 1.0])\n",
        "    plt.ylim([0.0, 1.05])\n",
        "    plt.grid('on')\n",
        "    plt.xlabel('False Positive Rate')\n",
        "    plt.ylabel('True Positive Rate')\n",
        "    plt.title('Receiver operating characteristic')\n",
        "    plt.legend(loc=\"lower right\")\n",
        "    plt.show()"
      ],
      "execution_count": 39,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fLTaVtfWbIEJ"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}